<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-28T03:02:46.790740" rpa="false" schemaversion="5">
<suite id="s1" name="ovsdb-upstream-southbound.txt">
<suite id="s1-s1" name="Connection Manager" source="/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot">
<kw name="Suite Setup" owner="OVSDB" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.411370" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:02:47.407374" elapsed="0.004066"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-28T03:02:47.406900" elapsed="0.004629"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.416528" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:02:47.413031" elapsed="0.003531"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-28T03:02:47.416821" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:47.416676" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.416643" elapsed="0.000254"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.417491" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:02:47.417082" elapsed="0.000458"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.418055" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:02:47.417709" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-28T03:02:47.418651" elapsed="0.000327"/>
</kw>
<msg time="2026-04-28T03:02:47.419088" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:47.419139" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:47.418256" elapsed="0.000907"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.419721" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:47.419329" elapsed="0.000420"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.421304" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:47.421022" elapsed="0.000311"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.421737" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:47.421475" elapsed="0.000288"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.422439" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.421912" elapsed="0.000556"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.425610" elapsed="0.000242"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.426362" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:02:47.426023" elapsed="0.000365"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.426532" elapsed="0.000308"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.427659" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:02:47.427363" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-28T03:02:47.427734" elapsed="0.000046"/>
</return>
<msg time="2026-04-28T03:02:47.427913" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-28T03:02:47.427059" elapsed="0.000899"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:47.428657" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.159:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b6450f72d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:02:47.428198" elapsed="0.000633"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.429044" elapsed="0.000200"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-28T03:02:47.424918" elapsed="0.004388"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:47.424718" elapsed="0.004633"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-28T03:02:47.422532" elapsed="0.006853"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.430107" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:02:47.429665" elapsed="0.000487"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.430717" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.159'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:02:47.430309" elapsed="0.000452"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.431321" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:02:47.430915" elapsed="0.000450"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-28T03:02:47.420511" elapsed="0.010913"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-28T03:02:47.412645" elapsed="0.018837"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:47.431690" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:47.431559" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.431536" elapsed="0.000225"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.434744" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:47.434357" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.435231" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:47.434920" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:47.435300" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:02:47.435458" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:47.434038" elapsed="0.001444"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:47.436496" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.436229" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.437508" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:47.437620" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.437159" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:47.441320" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:47.440414" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.440393" elapsed="0.001052"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.442089" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:47.442318" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.441633" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.443288" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:47.442624" elapsed="0.000767"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.444563" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.443647" elapsed="0.000966"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.446573" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:02:47.446751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:02:47.446108" elapsed="0.000687"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:47.447142" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.448827" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:02:47.798367" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:45 UTC 2026

  System load:  0.81               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:02:47.448499" elapsed="0.350068"/>
</kw>
<msg time="2026-04-28T03:02:47.798692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:47.448015" elapsed="0.350946"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:02:47.445071" elapsed="0.354111"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.800213" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-28T03:02:47.813588" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-28T03:02:47.813910" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:02:47.814091" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:02:47.799642" elapsed="0.014524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.814642" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.817533" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:47.816306" elapsed="0.001482"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:47.818834" elapsed="0.000174"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:47.818233" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.818167" elapsed="0.001128"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:02:47.820229" elapsed="0.000177"/>
</return>
<status status="PASS" start="2026-04-28T03:02:47.819501" elapsed="0.001090"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.819457" elapsed="0.001190"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:47.820736" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:47.825244" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.826376" elapsed="0.000453"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.827325" elapsed="0.000339"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:47.821445" elapsed="0.006326"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:02:47.439438" elapsed="0.388659"/>
</kw>
<msg time="2026-04-28T03:02:47.828188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:47.438791" elapsed="0.389490"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:02:47.438315" elapsed="0.390088"/>
</kw>
<msg time="2026-04-28T03:02:47.828464" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:47.437795" elapsed="0.390741"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:47.832380" elapsed="0.000639"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.833250" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.833766" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:47.829000" elapsed="0.005005"/>
</kw>
<msg time="2026-04-28T03:02:47.834136" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-28T03:02:47.436727" elapsed="0.397443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.834769" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:47.834418" elapsed="0.000411"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:02:47.834893" elapsed="0.000135"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-28T03:02:47.435838" elapsed="0.399333"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:47.435672" elapsed="0.399549"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:47.435537" elapsed="0.399736"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-28T03:02:47.431993" elapsed="0.403366"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:02:47.835565" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:47.850307" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:47.850191" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.850169" elapsed="0.000209"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.850671" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:47.850924" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.850525" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.851370" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:47.851113" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:47.851803" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:47.851559" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:47.852657" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:02:47.852409" elapsed="0.000450">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-28T03:02:47.852994" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:02:47.853042" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:47.852048" elapsed="0.001017"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:47.853368" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:47.853144" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:47.853125" elapsed="0.000342"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:47.854214" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.853930" elapsed="0.000310"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:02:47.854286" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:02:47.854436" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:02:47.853667" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.854605" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.855312" level="INFO">index=4
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:47.855414" level="INFO">${karaf_connection_object} = index=4
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.855196" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.855578" elapsed="0.002102"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:02:47.858169" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:02:48.925774" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:02:47.857833" elapsed="1.068212"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:48.929800" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:48.930339" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:48.930653" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:48.927658" elapsed="0.003153"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:48.926514" elapsed="0.004344"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:02:47.849892" elapsed="1.081021"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:02:47.837086" elapsed="1.093908"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:47.836548" elapsed="1.094501"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:47.836362" elapsed="1.094728"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-28T03:02:47.835965" elapsed="1.095165"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-28T03:02:47.411948" elapsed="1.519246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:48.933745" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:48.933621" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:48.933593" elapsed="0.000227"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:48.938180" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:48.938074" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:48.938056" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:48.939176" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:48.938772" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:48.939711" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:48.939350" elapsed="0.000387"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:48.939780" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:02:48.939952" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:48.938456" elapsed="0.001521"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:48.944978" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:48.944856" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:48.944839" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:48.946209" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:48.946084" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:48.946067" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:48.946732" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:48.946407" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:48.947224" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:48.946991" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:49.048762" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "v "s "[78Cd "[A[78Cb</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:48.947900" elapsed="0.101005"/>
</kw>
<msg time="2026-04-28T03:02:49.049067" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:49.049115" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:48.947403" elapsed="0.101749"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:49.196734" level="INFO">"- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "2 "0 "_ "_ "c "o "n "n "e "c "t "i "o "n "_ "m "a "n "a "g "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:49.049832" elapsed="0.147213"/>
</kw>
<msg time="2026-04-28T03:02:49.197304" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:49.197362" level="INFO">${message_wait} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:49.049323" elapsed="0.148080"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:49.198130" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:49.197542" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:49.197499" elapsed="0.000837"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:49.199019" level="INFO"> "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "2 "0 "_ "_ "c "o "n "n "e "c "t "i "o "n "_ "m "a "n "a "g "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:49.198482" elapsed="0.000661"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:49.199511" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:49.199220" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:49.199201" elapsed="0.000509"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:49.199748" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:49.202645" elapsed="0.000558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.203698" elapsed="0.000463"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:49.204587" elapsed="0.000324"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:49.201376" elapsed="0.003687"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:49.200137" elapsed="0.005121"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:48.945772" elapsed="0.259640"/>
</kw>
<msg time="2026-04-28T03:02:49.205559" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:49.205629" level="INFO">${message} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:48.945183" elapsed="0.260503"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:49.206166" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-28T03:02:49.205812" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:49.205781" elapsed="0.000531"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:49.206923" elapsed="0.000057"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:49.207473" elapsed="0.000035"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:49.207694" elapsed="0.000027"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:48.944572" elapsed="0.263289"/>
</kw>
<msg time="2026-04-28T03:02:49.208023" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:49.208092" level="INFO">${output} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:48.940352" elapsed="0.267795"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:49.208600" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:49.208259" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:49.208233" elapsed="0.000489"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:48.940219" elapsed="0.268538"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:48.940034" elapsed="0.268782"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:48.937774" elapsed="0.271133"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-28T03:02:48.931812" elapsed="0.277207"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:48.931341" elapsed="0.277749"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-28T03:02:47.406387" elapsed="1.802785"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:49.228870" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:49.228674" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:49.228639" elapsed="0.000380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:49.229607" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:49.229787" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:49.229309" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:49.230541" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:49.230091" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:49.231210" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:49.230824" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.232646" elapsed="0.000468"/>
</kw>
<msg time="2026-04-28T03:02:49.233354" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:49.233457" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:49.231736" elapsed="0.001771"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:49.235466" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:49.257647" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:49.236875" elapsed="0.020882"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:49.236165" elapsed="0.021663"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:49.258484" elapsed="0.000305"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:49.258089" elapsed="0.000750"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:02:49.234215" elapsed="0.024671"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:49.233678" elapsed="0.025283"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:49.233638" elapsed="0.025361"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:49.259866" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.259575" elapsed="0.000317"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:02:49.259965" elapsed="0.000044"/>
</return>
<msg time="2026-04-28T03:02:49.260139" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:02:49.259245" elapsed="0.000999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.260399" elapsed="0.000454"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:49.261159" level="INFO">index=7
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:49.261263" level="INFO">${karaf_connection_object} = index=7
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:49.261037" elapsed="0.000252"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.261430" elapsed="0.002455"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:02:49.264326" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:02:49.485408" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.264060" elapsed="0.221532"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:49.489709" elapsed="0.000346"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:49.490219" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:49.490559" elapsed="0.000110"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:49.486826" elapsed="0.003898"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:49.486070" elapsed="0.004700"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:02:49.226157" elapsed="0.264665"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:49.491384" level="INFO">Creating Session using : alias=session, url=http://10.30.170.159:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b645177450&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:02:49.490988" elapsed="0.001200"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:50.564426" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:50.566105" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Mon, 27-Apr-2026 03:02:50 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:02:50.566382" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:49.492626" elapsed="1.073819"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.574387" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:50.573451" elapsed="0.000978"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:50.570834" elapsed="0.003734"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.574852" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:50.574610" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.570801" elapsed="0.004186"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.575545" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:50.575178" elapsed="0.000446"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:50.575690" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:50.567238" elapsed="0.008645"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:50.593732" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:50.594345" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '222'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:02:50.594591" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:50.576106" elapsed="0.018544"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.605650" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:50.604406" elapsed="0.001311"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:50.600247" elapsed="0.005559"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.606210" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:50.605862" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.600205" elapsed="0.006177"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.607335" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:50.606725" elapsed="0.000722"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:50.607544" elapsed="0.000069"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:50.595354" elapsed="0.012413"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:02:49.492415" elapsed="1.115403"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:47.405744" elapsed="3.202123"/>
</kw>
<test id="s1-s1-t1" name="Connecting an OVS instance to the controller" line="26">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:50.610864" elapsed="0.000245"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:50.610597" elapsed="0.000567"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:50.612143" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:50.612032" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.612013" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:50.616877" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:50.616770" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.616752" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.617929" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:50.617547" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.618474" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:50.618171" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:50.618545" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:02:50.618736" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:50.617176" elapsed="0.001586"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:50.624024" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:50.623889" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.623870" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:50.625272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:50.625165" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.625148" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:50.625772" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:50.625471" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:50.626194" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:50.625974" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:50.679506" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:50.626716" elapsed="0.053088"/>
</kw>
<msg time="2026-04-28T03:02:50.680113" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:50.680180" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:50.626367" elapsed="0.053865"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:50.753321" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "n "e "c "t "i "n "g "[C "a "n "[C "O "V "S "[C "i "n "s "t "a "n "c "e "[C "t "o "[C "t "h "e "[C "c "o "n "t "r "o "l "l "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:50.681105" elapsed="0.072395"/>
</kw>
<msg time="2026-04-28T03:02:50.753699" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:50.753747" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "n "e "c "t "i "n "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:50.680517" elapsed="0.073269"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.754215" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:50.753896" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.753865" elapsed="0.000435"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.754829" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "n "e "c "t "i "n "g "[C "a "n "[C "O "V "S "[C "i "n "s "t "a "n "c "e "[C "t "o "[C "t "h "e "[C "c "o "n "t "r "o "l "l "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:50.754434" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.755206" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:50.754994" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.754976" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:50.755319" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:50.756887" elapsed="0.000822"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:50.758009" elapsed="0.000518"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:50.758823" elapsed="0.001962"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:50.756229" elapsed="0.004665"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:50.755628" elapsed="0.005411"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:50.624837" elapsed="0.136305"/>
</kw>
<msg time="2026-04-28T03:02:50.761236" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:50.761279" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "n "e "c "t "i "n "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:50.624233" elapsed="0.137083"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:50.761508" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:02:50.761396" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.761376" elapsed="0.000220"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.762057" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.762418" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:50.762496" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:50.623545" elapsed="0.139083"/>
</kw>
<msg time="2026-04-28T03:02:50.762727" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:50.762774" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "n "e "c "t "i "n "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:50.619167" elapsed="0.143645"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.763180" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:50.762895" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.762873" elapsed="0.000386"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:50.619030" elapsed="0.144252"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:50.618822" elapsed="0.144495"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:50.616408" elapsed="0.146966"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:50.611728" elapsed="0.151700"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:50.611308" elapsed="0.152164"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:50.608603" elapsed="0.154920"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:50.765620" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:50.765361" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:50.765342" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:50.766002" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:50.766108" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:50.765841" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.766698" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:50.766276" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:50.767283" level="INFO">${conn_id} = 10</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:50.766894" elapsed="0.000416"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:02:50.768215" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:02:50.768293" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:02:50.767898" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:50.768505" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:02:50.769726" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:02:51.512954" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:02:50.769404" elapsed="0.743697"/>
</kw>
<msg time="2026-04-28T03:02:51.513184" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:50.769048" elapsed="0.744216"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:02:50.767516" elapsed="0.745857"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.514159" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:02:51.537091" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:02:51.537389" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:02:51.537489" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:02:51.513600" elapsed="0.023941"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:51.537986" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:51.539592" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:51.538909" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:51.540178" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:51.539857" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:51.539810" elapsed="0.000523"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:02:51.540686" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:02:51.540450" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:51.540416" elapsed="0.000458"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:51.540982" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.546825" elapsed="0.000346"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:51.547329" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:51.547640" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:51.541667" elapsed="0.006123"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:02:50.764805" elapsed="0.783233"/>
</kw>
<msg time="2026-04-28T03:02:51.548095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:50.764255" elapsed="0.783891"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:02:50.763735" elapsed="0.784488"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:51.550348" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:51.550070" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:51.550052" elapsed="0.000376"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.550711" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:51.550820" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:51.550565" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:51.551460" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:51.551075" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.552038" level="INFO">${conn_id} = 12</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:51.551655" elapsed="0.000410"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:02:51.552947" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:02:51.553027" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:02:51.552655" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.553198" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.554401" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:02:51.901791" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:02:51 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:02:51.554062" elapsed="0.347895"/>
</kw>
<msg time="2026-04-28T03:02:51.902040" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.553675" elapsed="0.348462"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:02:51.552273" elapsed="0.349978"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.902732" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:02:51.925052" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:02:51.925301" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:02:51.925397" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:02:51.902484" elapsed="0.022962"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:51.925794" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:51.927369" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:51.926712" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:51.927924" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:51.927633" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:51.927583" elapsed="0.000541"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:02:51.928479" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:02:51.928243" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:51.928210" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:51.928734" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.936288" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:51.936992" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:51.937407" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:51.929448" elapsed="0.008168"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:02:51.549531" elapsed="0.388211"/>
</kw>
<msg time="2026-04-28T03:02:51.937818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.548980" elapsed="0.388910"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:02:51.548418" elapsed="0.389706"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:51.951771" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:51.951486" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:51.951465" elapsed="0.000389"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.952161" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:51.952268" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:51.952016" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:51.952819" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:51.952436" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.953392" level="INFO">${conn_id} = 14</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:51.953026" elapsed="0.000392"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:02:51.954328" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:02:51.954404" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:02:51.954020" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.954573" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:02:51.955915" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:02:52.291354" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:02:51 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:02:51.955599" elapsed="0.335894"/>
</kw>
<msg time="2026-04-28T03:02:52.291575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.955058" elapsed="0.336593"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:02:51.953624" elapsed="0.338135"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:02:52.292223" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:02:52.344704" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:02:52.344822" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:02:52.344865" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:02:52.291994" elapsed="0.052893"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:52.345085" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:52.345834" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:52.345521" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:52.346176" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:52.346031" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:52.346005" elapsed="0.000243"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:02:52.346406" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:52.346301" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:52.346285" elapsed="0.000203"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:52.346522" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:52.349134" elapsed="0.000383"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:52.349675" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:52.350015" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:52.346831" elapsed="0.003338"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:02:51.950948" elapsed="0.399314"/>
</kw>
<msg time="2026-04-28T03:02:52.350317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:51.950368" elapsed="0.400000"/>
</kw>
<msg time="2026-04-28T03:02:52.350481" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:02:51.949832" elapsed="0.400675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:52.350899" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:52.350654" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:02:52.351760" level="FAIL">'9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:02:52.351241" elapsed="0.000603">'9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:02:52.351031" elapsed="0.000890">'9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:02:52.351013" elapsed="0.000958">'9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:52.352182" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:52.352042" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:02:52.352025" elapsed="0.000236"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:02:52.352293" elapsed="0.000016"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:02:51.949377" elapsed="0.403027">'9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:02:52.352467" elapsed="0.000015"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:02:51.939248" elapsed="0.413314">'9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.368654" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:53.368363" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.368341" elapsed="0.000407"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.369072" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:53.369183" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:53.368892" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.369774" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:53.369357" elapsed="0.000465"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.370355" level="INFO">${conn_id} = 16</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:53.369989" elapsed="0.000391"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.371332" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:02:53.371409" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:02:53.371052" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:53.371579" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.372747" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:02:53.710719" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:02:52 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:02:53.372431" elapsed="0.338434"/>
</kw>
<msg time="2026-04-28T03:02:53.710971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:53.372085" elapsed="0.338970"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:02:53.370649" elapsed="0.340518"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.711652" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:02:53.764046" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:02:53.764329" level="INFO">${stdout} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:02:53.764427" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:02:53.711386" elapsed="0.053091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:53.764883" elapsed="0.000551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.766436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:53.765808" elapsed="0.000721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.767001" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:53.766694" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.766647" elapsed="0.000506"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:02:53.767496" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-28T03:02:53.767267" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.767235" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.767755" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:53.773893" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:53.774610" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:53.775065" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:53.768823" elapsed="0.006464"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:02:53.367813" elapsed="0.407607"/>
</kw>
<msg time="2026-04-28T03:02:53.775501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:53.367222" elapsed="0.408352"/>
</kw>
<msg time="2026-04-28T03:02:53.775734" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:02:53.366678" elapsed="0.409095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.776372" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:53.776010" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:53.776916" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:53.776536" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.776510" elapsed="0.001033"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.777964" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:53.777626" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.777602" elapsed="0.000494"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:02:53.778145" elapsed="0.000041"/>
</return>
<msg time="2026-04-28T03:02:53.778367" level="INFO">${output} = 9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:02:53.366220" elapsed="0.412185"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:02:53.778480" elapsed="0.000038"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:02:53.353452" elapsed="0.425198"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:02:51.938351" elapsed="1.840368"/>
</kw>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:50.607932" elapsed="3.170966"/>
</test>
<test id="s1-s1-t2" name="Get Operational Topology to verify the ovs instance is connected to the controller" line="31">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:53.784032" elapsed="0.000311"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:53.783641" elapsed="0.000783"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.785923" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:53.785804" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.785777" elapsed="0.000237"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.790471" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:53.790365" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.790348" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.791521" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:53.791134" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.792010" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:53.791700" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:53.792082" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:02:53.792234" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:53.790751" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.797534" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:53.797427" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.797409" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.798734" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:53.798629" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.798612" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:53.799260" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:53.798955" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.799655" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:53.799440" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.859930" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:53.800169" elapsed="0.060013"/>
</kw>
<msg time="2026-04-28T03:02:53.860487" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:53.860560" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:53.799829" elapsed="0.060788"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:53.970977" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "o "v "s "[C "i "n "s "t "a "[78Cn "[A[78Cc
 "e "[C "i "s "[C "c "o "n "n "e "c "t "e "d "[C "t "o "[C "t "h "e "[C "c "o "n "t "r "o "l "l "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:53.861775" elapsed="0.109444"/>
</kw>
<msg time="2026-04-28T03:02:53.971447" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:53.971494" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:53.861065" elapsed="0.110466"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.971997" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:53.971652" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.971618" elapsed="0.000467"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.972591" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "o "v "s "[C "i "n "s "t "a "[78Cn "[A[78Cc
 "e "[C "i "s "[C "c "o "n "n "e "c "t "e "d "[C "t "o "[C "t "h "e "[C "c "o "n "t "r "o "l "l "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:53.972221" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.972984" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:53.972752" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.972734" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:53.973112" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:53.974614" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:53.975668" elapsed="0.000493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:53.976415" elapsed="0.000358"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:53.973986" elapsed="0.002888"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:53.973410" elapsed="0.003547"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:53.798331" elapsed="0.178728"/>
</kw>
<msg time="2026-04-28T03:02:53.977186" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:53.977230" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:53.797740" elapsed="0.179527"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:53.977452" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:53.977344" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.977326" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.977959" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.978295" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:53.978366" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:53.797075" elapsed="0.181401"/>
</kw>
<msg time="2026-04-28T03:02:53.978570" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:53.978613" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:53.792635" elapsed="0.186016"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:53.978987" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:53.978726" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:53.978710" elapsed="0.000436"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:53.792503" elapsed="0.186671"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:53.792317" elapsed="0.186891"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:53.790014" elapsed="0.189251"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:53.785371" elapsed="0.193955"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:53.784633" elapsed="0.194739"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:53.780398" elapsed="0.199031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:53.979983" level="INFO">@{list} = [ ovsdb://uuid | "remote-ip":"10.30.170.161" | "local-port":6640 ]</msg>
<var>@{list}</var>
<arg>ovsdb://uuid</arg>
<arg>"remote-ip":"${TOOLS_SYSTEM_IP}"</arg>
<arg>"local-port":${OVSDBPORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:53.979591" elapsed="0.000420"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:54.001380" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:54.002884" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1309'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}]}]}]} 
 </msg>
<msg time="2026-04-28T03:02:54.003172" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:53.988075" elapsed="0.015156"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.012148" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:co...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:54.011449" elapsed="0.000729"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.009207" elapsed="0.003012"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.012392" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.012246" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.009166" elapsed="0.003303"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.012857" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.012602" elapsed="0.000389"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:54.013036" elapsed="0.000053"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:54.004135" elapsed="0.009065"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.003413" elapsed="0.009818"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.013398" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.013256" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.003370" elapsed="0.010101"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:02:54.013602" elapsed="0.000215"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.014194" elapsed="0.002311"/>
</kw>
<var name="${i}">ovsdb://uuid</var>
<status status="PASS" start="2026-04-28T03:02:54.014037" elapsed="0.002509"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.016774" elapsed="0.002484"/>
</kw>
<var name="${i}">"remote-ip":"10.30.170.161"</var>
<status status="PASS" start="2026-04-28T03:02:54.016630" elapsed="0.002671"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.019545" elapsed="0.002303"/>
</kw>
<var name="${i}">"local-port":6640</var>
<status status="PASS" start="2026-04-28T03:02:54.019392" elapsed="0.002497"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:02:54.013880" elapsed="0.008038"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:02:53.987602" elapsed="0.034395"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:02:53.980169" elapsed="0.041883"/>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.030203" level="INFO">${uuid} = </msg>
<var>${uuid}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:02:54.028241" elapsed="0.001991"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:54.040875" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:54.041273" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1309'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}]}]}]} 
 </msg>
<msg time="2026-04-28T03:02:54.041505" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${controller_http_session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:54.030381" elapsed="0.011180"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.051462" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:co...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:54.050764" elapsed="0.000727"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.047596" elapsed="0.003936"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.051700" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.051558" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.047553" elapsed="0.004224"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.052179" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.051911" elapsed="0.000390"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:54.052347" elapsed="0.000036"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:54.042183" elapsed="0.010299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.055435" level="INFO">${json_data} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interf...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:54.055006" elapsed="0.000458"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-28T03:02:54.055513" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:02:54.055688" level="INFO">${resp_json} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interf...</msg>
<var>${resp_json}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-28T03:02:54.052684" elapsed="0.003031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.056091" level="INFO">${topologies} = [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-ty...</msg>
<var>${topologies}</var>
<arg>${resp_json}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.055863" elapsed="0.000255"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-28T03:02:54.056478" level="INFO">${topology} = {'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-typ...</msg>
<var>${topology}</var>
<arg>${topologies}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.056265" elapsed="0.000239"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.056846" level="INFO">${node_list} = [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsd...</msg>
<var>${node_list}</var>
<arg>${topology}</arg>
<arg>node</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.056647" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.057313" level="INFO">[{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsdb:interface-type-tap'}, {'interface-type': 'ovsdb:interface-type-stt'}, {'interface-type': 'ovsdb:interface-type-internal'}, {'interface-type': 'ovsdb:interface-type-patch'}, {'interface-type': 'ovsdb:interface-type-lisp'}, {'interface-type': 'ovsdb:interface-type-geneve'}, {'interface-type': 'ovsdb:interface-type-gre'}, {'interface-type': 'ovsdb:interface-type-system'}], 'ovsdb:ovs-version': '2.17.11', 'ovsdb:connection-info': {'local-port': 6640, 'remote-port': 32962, 'local-ip': '10.30.170.159', 'remote-ip': '10.30.170.161'}, 'ovsdb:openvswitch-external-ids': [{'external-id-key': 'system-id', 'external-id-value': '3eb07ef3-5df0-4195-8cad-5c56eb67b298'}, {'external-id-key': 'hostname', 'external-id-value': 'ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d'}, {'external-id-key': 'rundir', 'external-id-value': '/var/run/openvswitch'}], 'ovsdb:datapath-type-entry': [{'datapath-type': 'ovsdb:datapath-type-netdev'}, {'datapath-type': 'ovsdb:datapath-type-system'}], 'ovsdb:manager-entry': [{'target': 'tcp:10.30.170.159:6640', 'number_of_connections': 1, 'connected': True}]}]</msg>
<arg>${node_list}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.057033" elapsed="0.000333"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.057911" level="INFO">${node_id} = ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<var>${node_id}</var>
<arg>${node}</arg>
<arg>node-id</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.057735" elapsed="0.000216"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:54.060022" level="INFO">${node_uuid} = 9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<var>${node_uuid}</var>
<arg>${node_id}</arg>
<arg>ovsdb://uuid/</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.058097" elapsed="0.001952"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.060550" elapsed="0.000148"/>
</kw>
<msg time="2026-04-28T03:02:54.060794" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.060846" level="INFO">${connection_info} = {'local-port': 6640, 'remote-port': 32962, 'local-ip': '10.30.170.159', 'remote-ip': '10.30.170.161'}</msg>
<var>${status}</var>
<var>${connection_info}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.060210" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.061420" elapsed="0.000152"/>
</kw>
<msg time="2026-04-28T03:02:54.061668" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.061712" level="INFO">${remote_ip} = 10.30.170.161</msg>
<var>${status}</var>
<var>${remote_ip}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.061077" elapsed="0.000658"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.062325" level="INFO">${uuid} = 9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<var>${uuid}</var>
<arg>'${remote_ip}' == '${ovs_system_ip}'</arg>
<arg>${node_uuid}</arg>
<arg>${uuid}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:54.061916" elapsed="0.000434"/>
</kw>
<var name="${node}">{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsdb...</var>
<status status="PASS" start="2026-04-28T03:02:54.057611" elapsed="0.004779"/>
</iter>
<var>${node}</var>
<value>@{node_list}</value>
<status status="PASS" start="2026-04-28T03:02:54.057426" elapsed="0.004996"/>
</for>
<return>
<value>${uuid}</value>
<status status="PASS" start="2026-04-28T03:02:54.062499" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:02:54.062655" level="INFO">${OVSDB_UUID} = 9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<var>${OVSDB_UUID}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="PASS" start="2026-04-28T03:02:54.027826" elapsed="0.034854"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.063177" level="INFO">${OVSDB_UUID} = 9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<arg>${OVSDB_UUID}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:02:54.062840" elapsed="0.000379"/>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:53.779455" elapsed="0.283879"/>
</test>
<test id="s1-s1-t3" name="Verify OVS Not In Config Topology" line="44">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:54.066572" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:54.066321" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.067842" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.067717" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.067696" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.072629" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.072521" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.072503" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.073709" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:54.073327" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.074197" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:54.073885" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:54.074266" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:02:54.074421" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:54.072914" elapsed="0.001531"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.079562" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.079448" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.079430" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.080768" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.080657" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.080640" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.081296" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.080988" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.081701" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:54.081476" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.130641" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:54.082215" elapsed="0.048622"/>
</kw>
<msg time="2026-04-28T03:02:54.131142" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:54.131215" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.081872" elapsed="0.049407"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.185756" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "V "e "r "i "f "y "[C "O "V "S "[C "N "o "t "[C "I "n "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:54.132158" elapsed="0.053853"/>
</kw>
<msg time="2026-04-28T03:02:54.186245" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:54.186293" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "V "e "r "i "f "y "[C "O "V "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.131563" elapsed="0.054767"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.186875" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.186538" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.186500" elapsed="0.000497"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.187528" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "V "e "r "i "f "y "[C "O "V "S "[C "N "o "t "[C "I "n "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.187135" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.187880" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.187672" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.187654" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:54.188016" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.189592" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.190657" elapsed="0.000511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:54.191423" elapsed="0.000588"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:54.188922" elapsed="0.003192"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:54.188341" elapsed="0.003835"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:54.080359" elapsed="0.111916"/>
</kw>
<msg time="2026-04-28T03:02:54.192367" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.192409" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "V "e "r "i "f "y "[C "O "V "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.079768" elapsed="0.112677"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:54.192629" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:54.192521" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.192503" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.193164" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.193498" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.193569" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:54.079114" elapsed="0.114561"/>
</kw>
<msg time="2026-04-28T03:02:54.193768" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.193811" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "V "e "r "i "f "y "[C "O "V "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.074793" elapsed="0.119054"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.194177" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.193921" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.193905" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:54.074664" elapsed="0.119611"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:54.074497" elapsed="0.119812"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:54.072156" elapsed="0.122211"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:54.067414" elapsed="0.127016"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.066994" elapsed="0.127484"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:54.064309" elapsed="0.130224"/>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:54.215136" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:54.215436" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:02:54.215649" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:54.205597" elapsed="0.010108"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.226485" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:54.225798" elapsed="0.000716"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.221568" elapsed="0.004984"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.226720" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.226578" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.221528" elapsed="0.005267"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.227326" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.226928" elapsed="0.000452"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:54.227423" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:54.216583" elapsed="0.010993"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.215875" elapsed="0.011743"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.227781" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.227641" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.215834" elapsed="0.012018"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:02:54.228088" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.228053" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:02:54.228038" elapsed="0.000114"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:02:54.227907" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.227891" elapsed="0.000303"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:02:54.228327" elapsed="0.000171"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.228841" elapsed="0.002493"/>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="PASS" start="2026-04-28T03:02:54.228692" elapsed="0.002682"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.231595" elapsed="0.002257"/>
</kw>
<var name="${i}">10.30.170.161</var>
<status status="PASS" start="2026-04-28T03:02:54.231454" elapsed="0.002438"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.234129" elapsed="0.002245"/>
</kw>
<var name="${i}">6634</var>
<status status="PASS" start="2026-04-28T03:02:54.233988" elapsed="0.002426"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:02:54.228557" elapsed="0.007885"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:02:54.205095" elapsed="0.031400"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:54.063687" elapsed="0.172931"/>
</test>
<test id="s1-s1-t4" name="Create bridge manually" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:54.240521" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:54.240262" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.241766" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.241650" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.241631" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.246307" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.246192" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.246174" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.247379" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:54.246982" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.247845" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:54.247556" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:54.247915" elapsed="0.000045"/>
</return>
<msg time="2026-04-28T03:02:54.248084" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:54.246582" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.255026" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.254880" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.254861" elapsed="0.000234"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.256224" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.256119" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.256101" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.256722" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.256423" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.257154" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:54.256895" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.300133" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:54.257658" elapsed="0.042581"/>
</kw>
<msg time="2026-04-28T03:02:54.300401" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:54.300445" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.257329" elapsed="0.043152"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.341298" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "m "a "n "u "a "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:54.301023" elapsed="0.040387"/>
</kw>
<msg time="2026-04-28T03:02:54.341570" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:54.341614" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.300642" elapsed="0.041008"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.341967" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.341728" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.341709" elapsed="0.000338"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.342467" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "m "a "n "u "a "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.342177" elapsed="0.000358"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.342801" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.342600" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.342583" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:54.342979" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.344386" elapsed="0.000804"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.345456" elapsed="0.000462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:54.346191" elapsed="0.000359"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:54.343764" elapsed="0.002883"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:54.343248" elapsed="0.003461"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:54.255792" elapsed="0.091013"/>
</kw>
<msg time="2026-04-28T03:02:54.346899" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.346956" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.255237" elapsed="0.091757"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:54.347188" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:54.347082" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.347051" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.347650" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.348029" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.348104" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:54.254543" elapsed="0.093666"/>
</kw>
<msg time="2026-04-28T03:02:54.348302" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.348344" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.248457" elapsed="0.099924"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.348692" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.348454" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.348438" elapsed="0.000329"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:54.248322" elapsed="0.100467"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:54.248159" elapsed="0.100661"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:54.245809" elapsed="0.103063"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:54.241359" elapsed="0.107598"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.240921" elapsed="0.108081"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:54.237699" elapsed="0.111356"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.351250" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.350996" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.350978" elapsed="0.000351"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.351602" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:02:54.351702" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:02:54.351463" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.352526" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovscon_br1" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.351904" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.353122" level="INFO">${conn_id} = 21</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.352718" elapsed="0.000430"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.354011" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:02:54.354087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:02:54.353727" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.354256" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.355389" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:02:54.692097" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:02:53 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:02:54.355078" elapsed="0.337204"/>
</kw>
<msg time="2026-04-28T03:02:54.692368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.354721" elapsed="0.337728"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:02:54.353352" elapsed="0.339218"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.693107" level="INFO">Executing command 'sudo ovs-vsctl add-br ovscon_br1'.</msg>
<msg time="2026-04-28T03:02:54.746123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:02:54.746374" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:02:54.746468" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:02:54.692819" elapsed="0.053697"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:54.746866" elapsed="0.000541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.748428" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.747792" elapsed="0.000728"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.749074" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.748741" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.748642" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:02:54.749612" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:02:54.749377" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.749344" elapsed="0.000448"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.749865" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.755717" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.757174" elapsed="0.000460"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:54.757965" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:54.750699" elapsed="0.007420"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:02:54.350465" elapsed="0.407745"/>
</kw>
<msg time="2026-04-28T03:02:54.758264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.349774" elapsed="0.408537"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-br ${BRIDGE1}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:02:54.349262" elapsed="0.409134"/>
</kw>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:54.237163" elapsed="0.521420"/>
</test>
<test id="s1-s1-t5" name="Get Operational Topology to verify the bridge has been added" line="51">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:54.762626" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:54.762373" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.763884" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.763765" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.763746" elapsed="0.000240"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.768480" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.768374" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.768356" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.769587" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:54.769205" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.770072" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:54.769764" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:54.770141" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:02:54.770291" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:54.768804" elapsed="0.001511"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.775442" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.775333" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.775315" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.776689" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.776582" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.776564" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.777246" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.776912" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.777637" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:54.777423" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.820078" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:54.778159" elapsed="0.042043"/>
</kw>
<msg time="2026-04-28T03:02:54.820375" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:54.820420" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.777812" elapsed="0.042645"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.886722" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "b "r "i "d "g "e "[C "h "a "[78Cs "[A[78C
 "b "e "e "n "[C "a "d "d "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:54.821016" elapsed="0.065875"/>
</kw>
<msg time="2026-04-28T03:02:54.887091" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:54.887137" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.820628" elapsed="0.066546"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.887528" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.887269" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.887243" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.888093" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "b "r "i "d "g "e "[C "h "a "[78Cs "[A[78C
 "b "e "e "n "[C "a "d "d "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.887746" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.888527" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.888323" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.888305" elapsed="0.000298"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:54.888638" elapsed="0.000060"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:54.890151" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.891206" elapsed="0.000465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:54.891925" elapsed="0.000390"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:54.889513" elapsed="0.002901"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:54.888965" elapsed="0.003512"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:54.776280" elapsed="0.116294"/>
</kw>
<msg time="2026-04-28T03:02:54.892696" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.892742" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.775650" elapsed="0.117129"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:54.892982" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:54.892856" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.892837" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.893491" elapsed="0.000030"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.893842" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.893919" elapsed="0.000030"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:54.774989" elapsed="0.119054"/>
</kw>
<msg time="2026-04-28T03:02:54.894136" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:54.894180" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.770686" elapsed="0.123531"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.894529" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.894290" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.894274" elapsed="0.000331"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:54.770553" elapsed="0.124073"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:54.770372" elapsed="0.124287"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:54.768018" elapsed="0.126698"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:54.763477" elapsed="0.131295"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.763056" elapsed="0.131762"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:54.759833" elapsed="0.135037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.895352" level="INFO">@{list} = [ ovscon_br1 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE1}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:54.895041" elapsed="0.000337"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:54.916067" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:54.919455" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:02:54.919829" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:54.903232" elapsed="0.016658"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.927981" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:54.927247" elapsed="0.000764"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.925399" elapsed="0.002652"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.928215" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.928076" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.925381" elapsed="0.002910"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.928680" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:54.928419" elapsed="0.000368"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:54.928830" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:54.920813" elapsed="0.008156"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:54.920098" elapsed="0.008902"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:54.929160" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:54.929024" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.920056" elapsed="0.009174"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:02:54.929357" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:54.929859" elapsed="0.002545"/>
</kw>
<var name="${i}">ovscon_br1</var>
<status status="PASS" start="2026-04-28T03:02:54.929714" elapsed="0.002730"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:02:54.929584" elapsed="0.002889"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:02:54.902781" elapsed="0.029746"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:02:54.895533" elapsed="0.037047"/>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:54.759100" elapsed="0.173621"/>
</test>
<test id="s1-s1-t6" name="Get Config Topology to verify the manually added bridge is not added to the config datastore" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:54.936265" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:54.936007" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.937519" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.937410" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.937392" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.942061" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.941952" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.941918" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.943154" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:54.942716" elapsed="0.000466"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:54.943638" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:54.943335" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:54.943710" elapsed="0.000040"/>
</return>
<msg time="2026-04-28T03:02:54.943876" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:54.942347" elapsed="0.001554"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.950832" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.950679" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.950651" elapsed="0.000273"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:54.952402" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:54.952288" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:54.952268" elapsed="0.000202"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:54.952970" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:54.952609" elapsed="0.000391"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.953384" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:54.953156" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:54.986295" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:54.954221" elapsed="0.032450"/>
</kw>
<msg time="2026-04-28T03:02:54.987185" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:54.987292" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.953566" elapsed="0.033808"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.117433" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "m "a "n "u "a "l "l "y "[C "a "d "d "e "d "[78C[C "[A[78Cb
 "r "i "d "g "e "[C "i "s "[C "n "o "t "[C "a "d "d "e "d "[C "t "o "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:54.988919" elapsed="0.128838"/>
</kw>
<msg time="2026-04-28T03:02:55.118056" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:55.118108" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.988006" elapsed="0.130141"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.118651" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.118290" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.118250" elapsed="0.000492"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.119308" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "m "a "n "u "a "l "l "y "[C "a "d "d "e "d "[78C[C "[A[78Cb
 "r "i "d "g "e "[C "i "s "[C "n "o "t "[C "a "d "d "e "d "[C "t "o "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.118882" elapsed="0.000531"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.119691" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.119482" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.119463" elapsed="0.000306"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:55.119806" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:55.121428" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.122517" elapsed="0.000510"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:55.123284" elapsed="0.000372"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:55.120758" elapsed="0.003014"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:55.120150" elapsed="0.003699"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:54.951920" elapsed="0.172053"/>
</kw>
<msg time="2026-04-28T03:02:55.124083" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:55.124130" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.951159" elapsed="0.173008"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:55.124358" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:02:55.124247" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.124228" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.124868" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.125222" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.125295" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:54.949109" elapsed="0.176306"/>
</kw>
<msg time="2026-04-28T03:02:55.125511" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:55.125555" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.944313" elapsed="0.181281"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.125913" elapsed="0.000111"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.125668" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.125651" elapsed="0.000433"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:54.944176" elapsed="0.181932"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:54.943983" elapsed="0.182161"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:54.941579" elapsed="0.184626"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:54.937129" elapsed="0.189151"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:54.936695" elapsed="0.189633"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:54.933692" elapsed="0.192693"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:55.136958" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:55.137304" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:02:55.137529" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:55.126550" elapsed="0.011036"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.148998" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:55.147591" elapsed="0.001437"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:55.143302" elapsed="0.005766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.149248" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.149094" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.143261" elapsed="0.006064"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.149711" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.149459" elapsed="0.000306"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:55.149807" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:55.138231" elapsed="0.011725"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}/bridge/${BRIDGE1}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:55.150100" elapsed="0.002570"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:54.933139" elapsed="0.219654"/>
</test>
<test id="s1-s1-t7" name="Create a Bridge through controller" line="68">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:55.155981" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:55.155710" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.157229" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.157118" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.157099" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.161849" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.161740" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.161723" elapsed="0.000248"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.162950" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:55.162559" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.163425" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:55.163131" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:55.163494" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:02:55.163645" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:55.162191" elapsed="0.001479"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.168773" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.168664" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.168645" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.169985" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.169860" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.169842" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:55.170480" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.170185" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.170864" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:55.170653" elapsed="0.000236"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.209009" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:55.171537" elapsed="0.037581"/>
</kw>
<msg time="2026-04-28T03:02:55.209288" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:55.209335" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.171069" elapsed="0.038303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.253753" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "a "[C "B "r "i "d "g "e "[C "t "h "r "o "u "g "h "[C "c "o "n "t "r "o "l "l "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:55.209887" elapsed="0.043983"/>
</kw>
<msg time="2026-04-28T03:02:55.254054" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:55.254100" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "a "[C...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.209542" elapsed="0.044594"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.254436" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.254214" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.254195" elapsed="0.000321"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.254979" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "a "[C "B "r "i "d "g "e "[C "t "h "r "o "u "g "h "[C "c "o "n "t "r "o "l "l "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.254651" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.255330" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.255123" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.255105" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:55.255439" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:55.256888" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.257962" elapsed="0.000460"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:55.258721" elapsed="0.000395"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:55.256246" elapsed="0.002971"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:55.255697" elapsed="0.003583"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:55.169560" elapsed="0.089819"/>
</kw>
<msg time="2026-04-28T03:02:55.259470" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:55.259513" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "a "[C...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.168998" elapsed="0.090553"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:55.259735" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:55.259627" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.259609" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.260228" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.260577" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.260648" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:55.168314" elapsed="0.092441"/>
</kw>
<msg time="2026-04-28T03:02:55.260847" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:55.260890" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "a "[C...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.164050" elapsed="0.096876"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.261260" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.261017" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.260999" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:55.163901" elapsed="0.097456"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:55.163726" elapsed="0.097662"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:55.161374" elapsed="0.100067"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:55.156814" elapsed="0.104680"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.156385" elapsed="0.105153"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:55.153731" elapsed="0.107857"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:02:55.262523" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:02:55.262712" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:02:55.262349" elapsed="0.000390"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:55.263159" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.262887" elapsed="0.000299"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:55.263572" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.263336" elapsed="0.000263"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:55.264075" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.263745" elapsed="0.000358"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:55.264542" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
            "ovsdb:bridge-name": "ovscon_br2",
            "ovs...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.264286" elapsed="0.000285"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:55.264981" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
            "ovsdb:bridge-name": "ovscon_br2",
            "ovs...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.264722" elapsed="0.000288"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:02:55.265386" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
            "ovsdb:bridge-name": "ovscon_br2",
            "ovs...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.265160" elapsed="0.000252"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.265909" level="INFO">${node_id_} = uuid%2F9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:55.265561" elapsed="0.000394"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.266449" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:02:55.266103" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.266922" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.266626" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.267408" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
            "ovsdb:bridge-name": "ovscon_br2",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000002"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.267165" elapsed="0.000292"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:55.311904" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Content-Length': '903', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
            "ovsdb:bridge-name": "ovscon_br2",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000002"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:02:55.312084" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:55.312286" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:55.267599" elapsed="0.044743"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.321659" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.318335" elapsed="0.003387"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.323819" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:02:55.321883" elapsed="0.001962"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:55.321747" elapsed="0.002135"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.318293" elapsed="0.005610"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.324302" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.324054" elapsed="0.000290"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:55.324387" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:55.313025" elapsed="0.011502"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:02:55.324704" elapsed="0.002287"/>
</kw>
<arg>uuid/${OVSDB_UUID}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE2}</arg>
<arg>0000000000000002</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:02:55.261853" elapsed="0.065201"/>
</kw>
<doc>This will create bridge on the specified OVSDB node.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:02:55.153167" elapsed="0.174026"/>
</test>
<test id="s1-s1-t8" name="Get Operational Topology to verify the bridge has been added through rest call" line="72">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:02:55.330400" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:02:55.330148" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.331640" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.331529" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.331510" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.336300" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.336193" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.336176" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.337372" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:02:55.336974" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.337863" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:55.337550" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:02:55.337967" elapsed="0.000036"/>
</return>
<msg time="2026-04-28T03:02:55.338133" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:02:55.336594" elapsed="0.001563"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.343471" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.343356" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.343336" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.344773" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:02:55.344665" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.344648" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:02:55.345325" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.345020" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.345713" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:02:55.345501" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.378090" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:02:55.346228" elapsed="0.032283"/>
</kw>
<msg time="2026-04-28T03:02:55.378891" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:02:55.378966" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.345887" elapsed="0.033122"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:02:55.459536" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "b "r "i "d "g "e "[C "h "a "[78Cs "[A[78C
 "b "e "e "n "[C "a "d "d "e "d "[C "t "h "r "o "u "g "h "[C "r "e "s "t "[C "c "a "l "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:02:55.380166" elapsed="0.079706"/>
</kw>
<msg time="2026-04-28T03:02:55.460287" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:02:55.460416" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.379428" elapsed="0.081074"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.461363" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.460733" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.460671" elapsed="0.001062"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.462824" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "b "r "i "d "g "e "[C "h "a "[78Cs "[A[78C
 "b "e "e "n "[C "a "d "d "e "d "[C "t "h "r "o "u "g "h "[C "r "e "s "t "[C "c "a "l "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.462110" elapsed="0.000971"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.463718" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.463241" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.463200" elapsed="0.000695"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:02:55.464023" elapsed="0.000092"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:02:55.466496" elapsed="0.000845"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:02:55.467624" elapsed="0.000535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:02:55.468461" elapsed="0.000387"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:02:55.465771" elapsed="0.003215"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:02:55.464821" elapsed="0.004235"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:02:55.344305" elapsed="0.124857"/>
</kw>
<msg time="2026-04-28T03:02:55.469267" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:55.469314" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.343687" elapsed="0.125664"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:02:55.469545" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:02:55.469433" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.469414" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.470096" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.470457" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:02:55.470529" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:02:55.343004" elapsed="0.127642"/>
</kw>
<msg time="2026-04-28T03:02:55.470751" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:02:55.470797" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.338520" elapsed="0.132320"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.471190" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.470922" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.470904" elapsed="0.000367"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:02:55.338386" elapsed="0.132910"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:02:55.338213" elapsed="0.133137"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:02:55.335821" elapsed="0.135605"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:02:55.331239" elapsed="0.140254"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:02:55.330803" elapsed="0.140747"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:02:55.328127" elapsed="0.143489"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.472155" level="INFO">@{list} = [ ovscon_br2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:02:55.471802" elapsed="0.000427"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:55.494687" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:55.495200" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:02:55.495446" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:55.480870" elapsed="0.014632"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.506511" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:55.505703" elapsed="0.000837"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:55.501561" elapsed="0.005019"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.506752" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.506605" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.501521" elapsed="0.005307"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.507226" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:55.506972" elapsed="0.000365"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:55.507382" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:55.496410" elapsed="0.011098"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:55.495675" elapsed="0.011863"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:55.507700" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:55.507562" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:55.495634" elapsed="0.012140"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:02:55.507909" elapsed="0.000195"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:02:55.511029" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:02:55.508506" elapsed="0.002667">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="FAIL" start="2026-04-28T03:02:55.508332" elapsed="0.002943">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:02:55.508176" elapsed="0.003216">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:02:55.480389" elapsed="0.031136">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:57.537715" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:57.538263" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:02:57.538713" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:57.525002" elapsed="0.013776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:57.550797" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:57.549768" elapsed="0.001066"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:57.546829" elapsed="0.004062"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:57.551105" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:57.550922" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:57.546783" elapsed="0.004401"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:57.551615" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:57.551319" elapsed="0.000378"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:57.551752" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:57.540093" elapsed="0.011828"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:57.539065" elapsed="0.012908"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:57.552142" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:57.551999" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:57.539004" elapsed="0.013212"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:02:57.552352" elapsed="0.000195"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:02:57.555628" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:02:57.553015" elapsed="0.003371">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="FAIL" start="2026-04-28T03:02:57.552782" elapsed="0.003950">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:02:57.552622" elapsed="0.004345">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:02:57.524030" elapsed="0.033300">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:02:59.581117" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:02:59.581399" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:02:59.581543" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:02:59.572155" elapsed="0.009419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:02:59.591563" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:02:59.590213" elapsed="0.001421"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:59.587372" elapsed="0.004363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:59.592172" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:59.591799" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:59.587343" elapsed="0.005015"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:02:59.593326" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:02:59.592691" elapsed="0.000925"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:02:59.593725" elapsed="0.000077"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:02:59.582148" elapsed="0.011923"/>
</kw>
<status status="PASS" start="2026-04-28T03:02:59.581692" elapsed="0.012454"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:02:59.594659" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:02:59.594205" elapsed="0.000605"/>
</branch>
<status status="PASS" start="2026-04-28T03:02:59.581663" elapsed="0.013199"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:02:59.595153" elapsed="0.000177"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:02:59.600088" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:02:59.595693" elapsed="0.004505">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="FAIL" start="2026-04-28T03:02:59.595531" elapsed="0.004755">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:02:59.595391" elapsed="0.005004">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:02:59.571404" elapsed="0.029108">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:01.627979" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:01.628366" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:03:01.628716" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:01.616133" elapsed="0.012644"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:01.639948" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:01.639118" elapsed="0.000862"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:01.635706" elapsed="0.004320"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:01.640205" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:01.640055" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:01.635661" elapsed="0.004623"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:01.640678" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:01.640420" elapsed="0.000338"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:01.640806" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:01.629833" elapsed="0.011129"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:01.629016" elapsed="0.011979"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:01.641158" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:01.641020" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:01.628964" elapsed="0.012266"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:01.641362" elapsed="0.000196"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:01.644333" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:01.641918" elapsed="0.002570">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="FAIL" start="2026-04-28T03:03:01.641757" elapsed="0.002819">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:01.641620" elapsed="0.003032">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:01.615312" elapsed="0.029458">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:03.670797" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:03.671052" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:03:03.671179" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:03.659589" elapsed="0.011624"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.679308" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:03.678218" elapsed="0.001132"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:03.675438" elapsed="0.003970"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.679648" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.679447" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.675411" elapsed="0.004345"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.680329" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:03.679963" elapsed="0.000772"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:03.680866" elapsed="0.000126"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:03.671824" elapsed="0.009432"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:03.671352" elapsed="0.009975"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.681698" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.681382" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.671320" elapsed="0.010540"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:03.682176" elapsed="0.000377"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.687653" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:03.683305" elapsed="0.004503">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="FAIL" start="2026-04-28T03:03:03.682987" elapsed="0.004968">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:03.682676" elapsed="0.005433">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:03.658998" elapsed="0.029284">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<msg time="2026-04-28T03:03:03.688449" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:02:55.472417" elapsed="8.216256">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:02:55.327533" elapsed="8.361478">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovscon_br2'</status>
</test>
<test id="s1-s1-t9" name="Get Config Topology to verify the entry added to the config datastore" line="83">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:03.697511" elapsed="0.000291"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:03.697180" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.699154" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.699006" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.698979" elapsed="0.000260"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.704718" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.704588" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.704570" elapsed="0.000218"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.705835" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:03.705420" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.706333" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:03.706033" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:03.706404" elapsed="0.000036"/>
</return>
<msg time="2026-04-28T03:03:03.706566" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:03.705036" elapsed="0.001553"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.712041" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.711916" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.711898" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.713371" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.713266" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.713249" elapsed="0.000187"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:03.713869" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:03.713569" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:03.714277" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:03.714061" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:03.755905" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:03.714770" elapsed="0.041303"/>
</kw>
<msg time="2026-04-28T03:03:03.756303" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:03.756353" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.714449" elapsed="0.042005"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:03.838302" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "e "n "t "r "y "[C "a "d "d "e "d "[C "t "o "[78C[C "[A[78Ct
 "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:03.757142" elapsed="0.081419"/>
</kw>
<msg time="2026-04-28T03:03:03.838792" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:03.838840" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.756717" elapsed="0.082161"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.839334" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.839018" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.838986" elapsed="0.000433"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.839956" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "e "n "t "r "y "[C "a "d "d "e "d "[C "t "o "[78C[C "[A[78Ct
 "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:03.839554" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.840323" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.840115" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.840097" elapsed="0.000304"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:03.840482" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:03.842043" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:03.843111" elapsed="0.000476"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:03.843844" elapsed="0.000386"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:03.841392" elapsed="0.002939"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:03.840801" elapsed="0.003593"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:03.712920" elapsed="0.131604"/>
</kw>
<msg time="2026-04-28T03:03:03.844622" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:03.844667" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.712249" elapsed="0.132456"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:03.844896" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:03.844787" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.844766" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.845405" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.845739" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.845811" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:03.711578" elapsed="0.134344"/>
</kw>
<msg time="2026-04-28T03:03:03.846060" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:03.846124" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.706992" elapsed="0.139172"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.846488" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.846243" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.846225" elapsed="0.000399"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:03.706840" elapsed="0.139808"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:03.706659" elapsed="0.140023"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:03.704194" elapsed="0.142545"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:03.698636" elapsed="0.148159"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.698091" elapsed="0.148750"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:03.691512" elapsed="0.155382"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:03.854902" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:03.855657" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1046'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovscon_br2","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000002"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:03.855769" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:03.847070" elapsed="0.008725"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.861213" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:03.860542" elapsed="0.000713"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:03.858568" elapsed="0.002747"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.861560" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.861353" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.858549" elapsed="0.003123"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.862251" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
                        "ovsdb:bridge-name": "ovscon_br2",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000002"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:03.861861" elapsed="0.000480"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:03.862406" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:03.856080" elapsed="0.006507"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>ovsdb://uuid/${OVSDB_UUID}/bridge/${BRIDGE2}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:03.862789" elapsed="0.003474"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:03.689783" elapsed="0.176695"/>
</test>
<test id="s1-s1-t10" name="Create bridge of already added bridge" line="89">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:03.870996" elapsed="0.000309"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:03.870606" elapsed="0.000778"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.872852" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.872692" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.872664" elapsed="0.000336"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.877683" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.877576" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.877559" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.878717" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:03.878344" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.879197" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:03.878891" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:03.879265" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:03.879415" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:03.877981" elapsed="0.001458"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.885056" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.884854" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.884826" elapsed="0.000298"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.886383" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:03.886276" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.886258" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:03.886902" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:03.886585" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:03.887327" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:03.887101" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:03.922520" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:03.887832" elapsed="0.034798"/>
</kw>
<msg time="2026-04-28T03:03:03.922798" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:03.922844" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.887505" elapsed="0.035374"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:03.988567" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "b "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:03.923438" elapsed="0.065425"/>
</kw>
<msg time="2026-04-28T03:03:03.989189" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:03.989247" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.923096" elapsed="0.066216"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.989889" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.989466" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.989420" elapsed="0.000595"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:03.990715" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "b "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:03.990212" elapsed="0.000738"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.991313" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.991052" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.991017" elapsed="0.000402"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:03.991464" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:03.993616" elapsed="0.001112"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:03.995145" elapsed="0.000642"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:03.996087" elapsed="0.000406"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:03.992690" elapsed="0.003911"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:03.991865" elapsed="0.004804"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:03.885969" elapsed="0.110819"/>
</kw>
<msg time="2026-04-28T03:03:03.996894" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:03.996956" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.885274" elapsed="0.111735"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:03.997222" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-28T03:03:03.997104" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.997075" elapsed="0.000244"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.997776" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.998137" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:03.998211" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:03.884345" elapsed="0.113995"/>
</kw>
<msg time="2026-04-28T03:03:03.998440" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:03.998485" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "r "e "a "t "e "[C "b "r "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.879792" elapsed="0.118733"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:03.998856" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:03.998602" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:03.998584" elapsed="0.000372"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:03.879663" elapsed="0.119328"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:03.879493" elapsed="0.119536"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:03.877215" elapsed="0.121878"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:03.872234" elapsed="0.126920"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:03.871590" elapsed="0.127613"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:03.867629" elapsed="0.131631"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:04.000269" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:04.000485" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:04.000087" elapsed="0.000427"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:04.000963" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.000676" elapsed="0.000371"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:04.001468" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.001204" elapsed="0.000292"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:04.001927" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.001679" elapsed="0.000297"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:04.002374" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
            "ovsdb:bridge-name": "ovscon_br1",
            "ovs...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.002137" elapsed="0.000274"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:04.002791" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
            "ovsdb:bridge-name": "ovscon_br1",
            "ovs...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.002562" elapsed="0.000257"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:04.003227" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
            "ovsdb:bridge-name": "ovscon_br1",
            "ovs...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.002983" elapsed="0.000272"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.004050" level="INFO">${node_id_} = uuid%2F9a5df812-eb49-4477-a37e-2d464c02791d</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:04.003407" elapsed="0.000672"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.004663" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:04.004231" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.005135" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.004852" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.005585" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
            "ovsdb:bridge-name": "ovscon_br1",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000001"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.005337" elapsed="0.000299"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:04.024803" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Content-Length': '903', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
            "ovsdb:bridge-name": "ovscon_br1",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000001"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:04.024929" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:04.025176" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:04.005781" elapsed="0.019452"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.034361" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.030809" elapsed="0.003699"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.037443" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:04.034736" elapsed="0.002744"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:04.034547" elapsed="0.002984"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.030764" elapsed="0.006797"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.038121" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.037751" elapsed="0.000429"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:04.038244" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:04.025857" elapsed="0.012574"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:04.038628" elapsed="0.003181"/>
</kw>
<arg>uuid/${OVSDB_UUID}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE1}</arg>
<arg>0000000000000001</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:03:03.999567" elapsed="0.042330"/>
</kw>
<doc>This will add bridge to the config datastore</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:03.866882" elapsed="0.175203"/>
</test>
<test id="s1-s1-t11" name="Get Config Topology to verify the entry of existing bridge added to the config datastore" line="93">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:04.046593" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:04.046329" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.047847" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.047735" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.047716" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.052419" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.052294" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.052277" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.053534" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:04.053127" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.054066" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:04.053711" elapsed="0.000381"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:04.054135" elapsed="0.000039"/>
</return>
<msg time="2026-04-28T03:03:04.054303" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:04.052723" elapsed="0.001605"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.059700" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.059592" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.059574" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.060958" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.060831" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.060814" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:04.061461" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.061162" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.061850" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:04.061636" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.097240" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:04.062364" elapsed="0.035086"/>
</kw>
<msg time="2026-04-28T03:03:04.097669" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:04.097716" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.062041" elapsed="0.035712"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.191873" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "e "n "t "r "y "[C "o "f "[C "e "x "i "s "t "[78Ci "[A[78Cn
 "g "[C "b "r "i "d "g "e "[C "a "d "d "e "d "[C "t "o "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:04.098468" elapsed="0.093839"/>
</kw>
<msg time="2026-04-28T03:03:04.192548" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:04.192596" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.098019" elapsed="0.094617"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.193137" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.192764" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.192731" elapsed="0.000495"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.193754" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "e "n "t "r "y "[C "o "f "[C "e "x "i "s "t "[78Ci "[A[78Cn
 "g "[C "b "r "i "d "g "e "[C "a "d "d "e "d "[C "t "o "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.193359" elapsed="0.000490"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.194147" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.193917" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.193899" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:04.194266" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.195770" elapsed="0.000806"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.196848" elapsed="0.000484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:04.197587" elapsed="0.000379"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:04.195133" elapsed="0.002935"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:04.194562" elapsed="0.003569"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:04.060532" elapsed="0.137698"/>
</kw>
<msg time="2026-04-28T03:03:04.198325" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:04.198369" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.059910" elapsed="0.138498"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:04.198593" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:04.198486" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.198468" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.199089" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.199420" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.199492" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:04.059253" elapsed="0.140347"/>
</kw>
<msg time="2026-04-28T03:03:04.199694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:04.199738" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "C "o "n "f "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.054691" elapsed="0.145085"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.200109" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.199851" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.199834" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:04.054560" elapsed="0.145649"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:04.054385" elapsed="0.145855"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:04.051925" elapsed="0.148384"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:04.047448" elapsed="0.152960"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.047019" elapsed="0.153435"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:04.043261" elapsed="0.157246"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:04.207760" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:04.208888" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1578'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovscon_br1","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000001"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovscon_br2","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000002"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:04.209020" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:04.200665" elapsed="0.008382"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.214912" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:04.213962" elapsed="0.001010"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:04.211824" elapsed="0.003207"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.215268" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.215067" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.211804" elapsed="0.003570"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.215907" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000001"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
                        "ovsdb:bridge-name": "ovscon_br2",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000002"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.215558" elapsed="0.000512"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:04.216133" elapsed="0.000044"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:04.209326" elapsed="0.007017"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>ovsdb://uuid/${OVSDB_UUID}/bridge/${BRIDGE1}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:04.216546" elapsed="0.003298"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:04.042502" elapsed="0.177523"/>
</test>
<test id="s1-s1-t12" name="Delete bridge manually" line="99">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:04.225331" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:04.224994" elapsed="0.000600"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.226578" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.226467" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.226448" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.231121" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.231015" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.230997" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.232162" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:04.231768" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.232643" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:04.232351" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:04.232713" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:04.232864" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:04.231406" elapsed="0.001483"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.238172" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.238034" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.238015" elapsed="0.000228"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.239374" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.239268" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.239251" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:04.239866" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.239573" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.240282" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:04.240056" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.274340" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:04.240785" elapsed="0.033789"/>
</kw>
<msg time="2026-04-28T03:03:04.274995" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:04.275104" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.240457" elapsed="0.034729"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.312382" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "b "r "i "d "g "e "[C "m "a "n "u "a "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:04.276429" elapsed="0.036065"/>
</kw>
<msg time="2026-04-28T03:03:04.312655" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:04.312700" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "b "r "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.275556" elapsed="0.037180"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.313064" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.312818" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.312797" elapsed="0.000402"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.313639" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "b "r "i "d "g "e "[C "m "a "n "u "a "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.313337" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.313998" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.313776" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.313758" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:04.314109" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.315542" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.316622" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:04.317367" elapsed="0.000364"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:04.314912" elapsed="0.002919"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:04.314383" elapsed="0.003512"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:04.238969" elapsed="0.079049"/>
</kw>
<msg time="2026-04-28T03:03:04.318113" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:04.318157" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "b "r "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.238388" elapsed="0.079807"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:04.318382" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:04.318275" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.318257" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.318854" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.319212" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.319289" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:04.237680" elapsed="0.081720"/>
</kw>
<msg time="2026-04-28T03:03:04.319500" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:04.319557" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "b "r "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.233265" elapsed="0.086342"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.319960" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.319690" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.319673" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:04.233133" elapsed="0.086931"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:04.232959" elapsed="0.087137"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:04.230646" elapsed="0.089506"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:04.226175" elapsed="0.094053"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.225735" elapsed="0.094542"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:04.221659" elapsed="0.098671"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.322593" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.322335" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.322317" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.323006" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:04.323107" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:04.322852" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.323853" level="INFO">Attempting to execute command "sudo ovs-vsctl del-br ovscon_br2" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.323274" elapsed="0.000626"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.324478" level="INFO">${conn_id} = 31</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.324079" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.325426" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:04.325502" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:04.325137" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.325672" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.326927" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:04.657444" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:02:54 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:04.326613" elapsed="0.330997"/>
</kw>
<msg time="2026-04-28T03:03:04.657696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.326269" elapsed="0.331505"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:04.324711" elapsed="0.333174"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.658366" level="INFO">Executing command 'sudo ovs-vsctl del-br ovscon_br2'.</msg>
<msg time="2026-04-28T03:03:04.701170" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:04.701457" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:04.701551" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:04.658130" elapsed="0.043470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:04.702043" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.703604" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.702993" elapsed="0.000703"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.704209" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.703868" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.703818" elapsed="0.000551"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:04.704712" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:03:04.704482" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.704451" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.705009" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.710768" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.711858" elapsed="0.000422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:04.712442" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:04.705707" elapsed="0.006883"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:04.321779" elapsed="0.390901"/>
</kw>
<msg time="2026-04-28T03:03:04.712808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.321229" elapsed="0.391631"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-br ${BRIDGE2}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:04.320690" elapsed="0.392271"/>
</kw>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:04.220867" elapsed="0.492213"/>
</test>
<test id="s1-s1-t13" name="Get Operational Topology to verify the bridge has been deleted manually" line="102">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:04.716517" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:04.716264" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.717762" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.717653" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.717635" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.722344" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.722240" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.722223" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.723395" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:04.723005" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.723879" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:04.723571" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:04.723963" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:04.724146" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:04.722629" elapsed="0.001541"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.729543" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.729289" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.729270" elapsed="0.000339"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.730770" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.730661" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.730644" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:04.731288" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.730992" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.731679" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:04.731466" elapsed="0.000238"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.772869" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:04.732209" elapsed="0.040791"/>
</kw>
<msg time="2026-04-28T03:03:04.773182" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:04.773229" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.731852" elapsed="0.041412"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.860506" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "b "r "i "d "g "e "[C "h "a "[78Cs "[A[78C
 "b "e "e "n "[C "d "e "l "e "t "e "d "[C "m "a "n "u "a "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:04.773778" elapsed="0.086985"/>
</kw>
<msg time="2026-04-28T03:03:04.861013" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:04.861062" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.773432" elapsed="0.087666"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.861615" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.861215" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.861183" elapsed="0.000519"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.862223" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "e "[C "b "r "i "d "g "e "[C "h "a "[78Cs "[A[78C
 "b "e "e "n "[C "d "e "l "e "t "e "d "[C "m "a "n "u "a "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.861835" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.862582" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.862377" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.862359" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:04.862695" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:04.864227" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.865293" elapsed="0.000472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:04.866043" elapsed="0.000359"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:04.863566" elapsed="0.002938"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:04.863010" elapsed="0.003559"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:04.730355" elapsed="0.136313"/>
</kw>
<msg time="2026-04-28T03:03:04.866761" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:04.866806" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.729757" elapsed="0.137085"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:04.867042" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:04.866918" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.866900" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.867516" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.867843" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.867914" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:04.728930" elapsed="0.139121"/>
</kw>
<msg time="2026-04-28T03:03:04.868144" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:04.868187" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.724547" elapsed="0.143676"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.868534" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.868296" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.868280" elapsed="0.000330"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:04.724413" elapsed="0.144219"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:04.724227" elapsed="0.144436"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:04.721876" elapsed="0.146842"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:04.717365" elapsed="0.151408"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.716919" elapsed="0.151900"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:04.714063" elapsed="0.154810"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.869371" level="INFO">@{list} = [ ovscon_br2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:04.869043" elapsed="0.000386"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:04.891662" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:04.891881" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:03:04.892062" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:04.881079" elapsed="0.011010"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.903845" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:04.903085" elapsed="0.000790"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:04.897968" elapsed="0.005949"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.904116" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.903972" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.897899" elapsed="0.006293"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.904576" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:04.904323" elapsed="0.000400"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:04.904798" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:04.892808" elapsed="0.012164"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:04.892182" elapsed="0.012822"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:04.905166" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:04.905028" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.892160" elapsed="0.013078"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:04.905460" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.905426" elapsed="0.000070"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:04.905411" elapsed="0.000105"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:04.905292" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.905277" elapsed="0.000279"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:04.905684" elapsed="0.000166"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:04.906210" elapsed="0.002337"/>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="PASS" start="2026-04-28T03:03:04.906055" elapsed="0.002531"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:04.905907" elapsed="0.002710"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:04.880578" elapsed="0.028092"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:04.869586" elapsed="0.039134"/>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:04.713555" elapsed="0.195286"/>
</test>
<test id="s1-s1-t14" name="Config Topology Still Contains Bridge" line="113">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:04.912020" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:04.911726" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.913298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.913188" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.913168" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.917816" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.917710" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.917693" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.918842" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:04.918467" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:04.919331" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:04.919033" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:04.919399" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:04.919548" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:04.918108" elapsed="0.001465"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.948837" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.948684" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.948659" elapsed="0.000300"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:04.950226" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:04.950118" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:04.950100" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:04.950738" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:04.950428" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.951193" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:04.950922" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:04.996295" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:04.951697" elapsed="0.044830"/>
</kw>
<msg time="2026-04-28T03:03:04.996721" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:04.996768" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.951373" elapsed="0.045432"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.048323" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "S "t "i "l "l "[C "C "o "n "t "a "i "n "s "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:04.997411" elapsed="0.051223"/>
</kw>
<msg time="2026-04-28T03:03:05.048884" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:05.048931" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "f "i "g "[C "T "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.997032" elapsed="0.051971"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.049478" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.049137" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.049101" elapsed="0.000462"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.050103" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "S "t "i "l "l "[C "C "o "n "t "a "i "n "s "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.049699" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.050459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.050248" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.050231" elapsed="0.000306"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:05.050573" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.052159" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.053225" elapsed="0.000484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.053992" elapsed="0.000372"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:05.051471" elapsed="0.002997"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:05.050889" elapsed="0.003642"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:04.949788" elapsed="0.104842"/>
</kw>
<msg time="2026-04-28T03:03:05.054732" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.054776" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "f "i "g "[C "T "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.949133" elapsed="0.105680"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:05.055016" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.054891" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.054873" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.055495" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.055824" elapsed="0.000051"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.055925" elapsed="0.000031"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:04.948188" elapsed="0.107864"/>
</kw>
<msg time="2026-04-28T03:03:05.056147" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.056192" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "o "n "f "i "g "[C "T "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.919946" elapsed="0.136285"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.056636" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.056392" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.056374" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:04.919787" elapsed="0.136950"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:04.919623" elapsed="0.137147"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:04.917355" elapsed="0.139472"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:04.912835" elapsed="0.144055"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:04.912424" elapsed="0.144528"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:04.909709" elapsed="0.147299"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:05.067187" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:05.067509" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1578'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovscon_br1","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000001"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovscon_br2","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000002"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:05.067771" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:05.057165" elapsed="0.010662"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.077955" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:05.077238" elapsed="0.000748"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:05.074088" elapsed="0.003939"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.078195" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.078052" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.074045" elapsed="0.004226"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.078653" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000001"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2",
                        "ovsdb:bridge-name": "ovscon_br2",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000002"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.078405" elapsed="0.000359"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:05.078808" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:05.068480" elapsed="0.010521"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>ovsdb://uuid/${OVSDB_UUID}/bridge/${BRIDGE2}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:05.079152" elapsed="0.002372"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:04.909166" elapsed="0.172472"/>
</test>
<test id="s1-s1-t15" name="Delete the Bridge through rest call" line="119">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:05.084960" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:05.084686" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.086202" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.086090" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.086071" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.090775" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.090671" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.090654" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.091823" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:05.091441" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.092333" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:05.092037" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:05.092403" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:05.092556" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:05.091073" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.097845" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.097738" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.097720" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.099073" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.098964" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.098925" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:05.099576" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.099272" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.100038" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:05.099754" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.140100" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:05.100561" elapsed="0.039761"/>
</kw>
<msg time="2026-04-28T03:03:05.140560" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:05.140607" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.100219" elapsed="0.040426"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.189174" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[C "t "h "r "o "u "g "h "[C "r "e "s "t "[C "c "a "l "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:05.141329" elapsed="0.048044"/>
</kw>
<msg time="2026-04-28T03:03:05.189580" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:05.189627" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "t "h "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.140879" elapsed="0.048786"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.190111" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.189778" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.189745" elapsed="0.000534"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.190796" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[C "t "h "r "o "u "g "h "[C "r "e "s "t "[C "c "a "l "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.190416" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.191167" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.190958" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.190922" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:05.191280" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.192775" elapsed="0.000782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.193829" elapsed="0.000497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.194580" elapsed="0.000374"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:05.192149" elapsed="0.002908"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:05.191573" elapsed="0.003547"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:05.098644" elapsed="0.096574"/>
</kw>
<msg time="2026-04-28T03:03:05.195311" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.195354" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "t "h "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.098070" elapsed="0.097321"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:05.195575" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.195468" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.195449" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.196104" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.196437" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.196507" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:05.097397" elapsed="0.099220"/>
</kw>
<msg time="2026-04-28T03:03:05.196711" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.196754" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "D "e "l "e "t "e "[C "t "h "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.092956" elapsed="0.103836"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.197122" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.196867" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.196850" elapsed="0.000348"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:05.092808" elapsed="0.104412"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:05.092635" elapsed="0.104619"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:05.090318" elapsed="0.106994"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:05.085786" elapsed="0.111582"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.085370" elapsed="0.112043"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:05.082662" elapsed="0.114807"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:05.210451" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:05.210540" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE2}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:05.197622" elapsed="0.012980"/>
</kw>
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:05.082081" elapsed="0.128641"/>
</test>
<test id="s1-s1-t16" name="Get Operational Topology after Deletion of Bridge" line="126">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:05.218173" elapsed="0.000473"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:05.217571" elapsed="0.001198"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.220650" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.220537" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.220518" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.225273" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.225165" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.225148" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.226314" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:05.225919" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.226785" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:05.226491" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:05.226854" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:05.227026" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:05.225555" elapsed="0.001496"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.232217" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.232109" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.232091" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.233408" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.233303" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.233285" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:05.233902" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.233605" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.234323" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:05.234109" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.264954" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:05.234814" elapsed="0.030380"/>
</kw>
<msg time="2026-04-28T03:03:05.265417" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:05.265463" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.234496" elapsed="0.031004"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.328367" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "f "[C "B "r "i "d "g "[78Ce "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:05.266196" elapsed="0.062401"/>
</kw>
<msg time="2026-04-28T03:03:05.328834" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:05.328881" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.265731" elapsed="0.063187"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.329371" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.329060" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.329026" elapsed="0.000512"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.330067" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "f "[C "B "r "i "d "g "[78Ce "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.329676" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.330427" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.330218" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.330200" elapsed="0.000306"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:05.330543" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.332079" elapsed="0.000766"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.333131" elapsed="0.000463"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.333850" elapsed="0.000377"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:05.331408" elapsed="0.002920"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:05.330837" elapsed="0.003555"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:05.233007" elapsed="0.101484"/>
</kw>
<msg time="2026-04-28T03:03:05.334584" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.334629" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.232425" elapsed="0.102242"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:05.334851" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.334745" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.334727" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.335342" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.335666" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.335747" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:05.231726" elapsed="0.104129"/>
</kw>
<msg time="2026-04-28T03:03:05.335963" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.336009" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "G "e "t "[C "O "p "e "r "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.227411" elapsed="0.108638"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.336365" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.336124" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.336107" elapsed="0.000334"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:05.227278" elapsed="0.109186"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:05.227105" elapsed="0.109391"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:05.224794" elapsed="0.111758"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:05.220120" elapsed="0.116490"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.219119" elapsed="0.117537"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:05.212519" elapsed="0.124193"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.337198" level="INFO">@{list} = [ ovscon_br2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:05.336865" elapsed="0.000360"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:05.359142" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:05.359386" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:03:05.359561" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:05.348803" elapsed="0.010797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.367789" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:05.366688" elapsed="0.001147"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:05.363589" elapsed="0.004306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.368171" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.367955" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.363563" elapsed="0.004725"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.368681" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.368433" elapsed="0.000359"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:05.368837" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:05.360228" elapsed="0.008751"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:05.359750" elapsed="0.009260"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.369173" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.369035" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.359689" elapsed="0.009556"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:05.369463" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.369428" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:05.369414" elapsed="0.000107"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:05.369300" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.369285" elapsed="0.000278"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:05.369695" elapsed="0.000167"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:05.370212" elapsed="0.002374"/>
</kw>
<var name="${i}">ovscon_br2</var>
<status status="PASS" start="2026-04-28T03:03:05.370065" elapsed="0.002562"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:05.369918" elapsed="0.002739"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:05.348341" elapsed="0.024370"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:05.337420" elapsed="0.035344"/>
</kw>
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:05.211079" elapsed="0.161800"/>
</test>
<test id="s1-s1-t17" name="Check For Bug 4756" line="186">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:05.377182" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:05.376907" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.378423" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.378312" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.378293" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.383019" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.382898" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.382880" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.384069" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:05.383662" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.384539" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:05.384246" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:05.384608" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:05.384762" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:05.383300" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.389991" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.389869" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.389851" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.391191" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.391086" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.391069" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:05.391719" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.391396" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.392140" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:05.391908" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.428821" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:05.392639" elapsed="0.036360"/>
</kw>
<msg time="2026-04-28T03:03:05.429165" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:05.429211" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.392317" elapsed="0.036930"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.483051" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:05.429748" elapsed="0.053436"/>
</kw>
<msg time="2026-04-28T03:03:05.483353" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:05.483398" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.429417" elapsed="0.054019"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.483778" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.483519" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.483495" elapsed="0.000364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.484315" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.484012" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.484656" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.484450" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.484433" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:05.484764" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.486199" elapsed="0.000784"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.487254" elapsed="0.000488"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.488017" elapsed="0.000362"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:05.485575" elapsed="0.002904"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:05.485046" elapsed="0.003497"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:05.390764" elapsed="0.097877"/>
</kw>
<msg time="2026-04-28T03:03:05.488733" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.488776" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.390200" elapsed="0.098612"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:05.489021" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.488889" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.488871" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.489497" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.489827" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.489898" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:05.389532" elapsed="0.100490"/>
</kw>
<msg time="2026-04-28T03:03:05.490115" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.490159" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.385151" elapsed="0.105045"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.490547" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.490306" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.490288" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:05.385019" elapsed="0.105627"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:05.384838" elapsed="0.105837"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:05.382542" elapsed="0.108189"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:05.378023" elapsed="0.112762"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.377589" elapsed="0.113241"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:05.373971" elapsed="0.116911"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.500178" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.499903" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.499885" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.500539" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:05.500642" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.500395" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.501202" level="INFO">Attempting to execute command "grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.500810" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.501754" level="INFO">${conn_id} = 38</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.501395" elapsed="0.000385"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.502654" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:05.502730" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:05.502380" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.502899" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.504087" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:05.834608" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:45 UTC 2026

  System load:  0.81               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:02:47 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:05.503755" elapsed="0.331025"/>
</kw>
<msg time="2026-04-28T03:03:05.834869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.503384" elapsed="0.331591"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:05.501999" elapsed="0.333101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.835598" level="INFO">Executing command 'grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:03:05.848575" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:03:05.848736" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:03:05.848797" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:05.835333" elapsed="0.013496"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.849176" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.850623" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.850016" elapsed="0.000700"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.851200" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.850885" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.850835" elapsed="0.000521"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:05.851742" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.851503" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.851439" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.852035" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.857719" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.858799" elapsed="0.000378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.859538" elapsed="0.000223"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:05.852704" elapsed="0.007172"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:05.499355" elapsed="0.360753"/>
</kw>
<msg time="2026-04-28T03:03:05.860224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.498796" elapsed="0.361534"/>
</kw>
<msg time="2026-04-28T03:03:05.860461" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:03:05.498186" elapsed="0.362299"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:03:05.860660" elapsed="0.000316"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>SimpleShardDataTreeCohort.*Unexpected failure in validation phase</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:03:05.497607" elapsed="0.363430"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.862273" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:05.861780" elapsed="0.000521"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:03:05.862517" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.862374" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.862357" elapsed="0.000241"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.862752" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.862917" elapsed="0.000035"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.863105" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.863269" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.863427" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.863607" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.863760" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.864005" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.863842" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:05.863825" elapsed="0.000319"/>
</if>
<arg>4756</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:05.861441" elapsed="0.002752"/>
</kw>
<doc>bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:05.373310" elapsed="0.490963"/>
</test>
<test id="s1-s1-t18" name="Check For Bug 4794" line="194">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:05.868336" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:05.868075" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.869557" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.869449" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.869432" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.875573" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.875238" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.875172" elapsed="0.000591"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.878400" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:05.877347" elapsed="0.001120"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.879595" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:05.878823" elapsed="0.000835"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:05.879759" elapsed="0.000077"/>
</return>
<msg time="2026-04-28T03:03:05.880171" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:05.876408" elapsed="0.003820"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.888534" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.888422" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.888403" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.889848" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:05.889718" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.889701" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:05.890425" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.890098" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.890844" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:05.890613" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.924528" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:05.891430" elapsed="0.033347"/>
</kw>
<msg time="2026-04-28T03:03:05.925051" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:05.925102" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.891050" elapsed="0.034091"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.959487" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:05.925875" elapsed="0.033931"/>
</kw>
<msg time="2026-04-28T03:03:05.960264" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:05.960331" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.925403" elapsed="0.034965"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.960779" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.960491" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.960456" elapsed="0.000409"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.961388" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.961019" elapsed="0.000518"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.961818" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.961608" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.961590" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:05.961948" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.963528" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.964610" elapsed="0.000747"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.965652" elapsed="0.000386"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:05.962837" elapsed="0.003308"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:05.962256" elapsed="0.003955"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:05.889399" elapsed="0.076914"/>
</kw>
<msg time="2026-04-28T03:03:05.966407" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.966450" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.888755" elapsed="0.077732"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:05.966684" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:05.966574" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.966555" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.967187" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.967545" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:05.967621" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:05.888056" elapsed="0.079673"/>
</kw>
<msg time="2026-04-28T03:03:05.967821" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:05.967865" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "n "e "c "t "i "o "n "[C "M "a "n "a "g "e "r ". "C "h "e "c "k "[C "F "o "r "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.881161" elapsed="0.086742"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.968236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.967995" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.967978" elapsed="0.000334"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:05.880812" elapsed="0.087523"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:05.880397" elapsed="0.087971"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:05.873910" elapsed="0.094515"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:05.869163" elapsed="0.099319"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:05.868736" elapsed="0.099793"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:05.865494" elapsed="0.103105"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:05.977772" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:05.977512" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:05.977493" elapsed="0.000358"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.978149" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:05.978294" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:05.978008" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.978844" level="INFO">Attempting to execute command "grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:05.978466" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.979463" level="INFO">${conn_id} = 41</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:05.979054" elapsed="0.000437"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:05.980388" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:05.980464" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:05.980097" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.980633" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:05.981786" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:06.329161" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:45 UTC 2026

  System load:  0.81               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:05 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:05.981472" elapsed="0.347881"/>
</kw>
<msg time="2026-04-28T03:03:06.329632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.981127" elapsed="0.348600"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:05.979699" elapsed="0.350149"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:06.330357" level="INFO">Executing command 'grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:03:06.343414" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:03:06.343579" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:03:06.343639" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:06.330104" elapsed="0.013567"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:06.343896" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:06.345280" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:06.344616" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:06.345860" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:06.345564" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:06.345512" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:06.346417" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:03:06.346176" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:06.346142" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:06.346678" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:06.352878" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:06.354060" elapsed="0.000356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:06.354724" elapsed="0.000247"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:06.347489" elapsed="0.007602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:05.976990" elapsed="0.378374"/>
</kw>
<msg time="2026-04-28T03:03:06.355646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:05.976419" elapsed="0.379366"/>
</kw>
<msg time="2026-04-28T03:03:06.356084" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:03:05.975791" elapsed="0.380350"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:03:06.356435" elapsed="0.000308"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>Shard.*shard-topology-operational An exception occurred while preCommitting transaction</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:03:05.975201" elapsed="0.381605"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:06.358015" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:06.357578" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:03:06.358305" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:06.358154" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:06.358134" elapsed="0.000252"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.358540" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.358706" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.358877" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.359058" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.359216" elapsed="0.000034"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.359403" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.359557" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.359785" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:06.359638" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:06.359622" elapsed="0.000236"/>
</if>
<arg>4794</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:06.357232" elapsed="0.002674"/>
</kw>
<doc>bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:05.864824" elapsed="0.495140"/>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:06.361550" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 | /rests/data/network-topology:network-topology/...</msg>
<var>@{uris}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE1}</arg>
<arg>${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:06.361047" elapsed="0.000531"/>
</kw>
<kw name="Suite Teardown" owner="OVSDB">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:06.366673" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:06.366394" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:06.366374" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:06.367075" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:06.367178" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:06.366900" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:06.367763" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:06.367378" elapsed="0.000432"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:06.368413" level="INFO">${conn_id} = 43</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:06.368035" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:06.369271" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:06.369346" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:06.368991" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:06.369516" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:06.370755" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:07.232024" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:04 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:06.370350" elapsed="0.861834"/>
</kw>
<msg time="2026-04-28T03:03:07.232269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:06.370004" elapsed="0.862363"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:06.368645" elapsed="0.863834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:07.232975" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:03:08.482777" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:08.483255" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:08.483358" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:07.232707" elapsed="1.250708"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:08.484115" elapsed="0.000667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:08.485881" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovscon_br1
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:08.485230" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:08.486575" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:08.486221" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:08.486169" elapsed="0.000567"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:08.487127" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:03:08.486852" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:08.486819" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:08.487405" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.493859" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:08.495056" elapsed="0.000372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:08.495759" elapsed="0.000251"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:08.488148" elapsed="0.007986"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:06.365881" elapsed="2.130455"/>
</kw>
<msg time="2026-04-28T03:03:08.496563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:06.363526" elapsed="2.133187"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:06.363083" elapsed="2.133806"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:08.500294" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:08.500031" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:08.500012" elapsed="0.000362"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.500655" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:08.500759" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:08.500514" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:08.501328" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:08.500927" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.501902" level="INFO">${conn_id} = 45</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:08.501522" elapsed="0.000406"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:08.502803" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:08.502878" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:08.502518" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.503064" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.504319" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:08.839806" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:07 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:08.503893" elapsed="0.336089"/>
</kw>
<msg time="2026-04-28T03:03:08.840071" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.503547" elapsed="0.336620"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:08.502153" elapsed="0.338128"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.840759" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:03:08.884492" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:03:08.884877" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:08.885036" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:08.840519" elapsed="0.044575"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:08.885555" elapsed="0.001188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:08.887835" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:08.887177" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:08.888464" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:08.888162" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:08.888108" elapsed="0.000516"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:08.889012" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:03:08.888741" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:08.888707" elapsed="0.000499"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:08.889281" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.894980" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:08.895477" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:08.895787" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:08.890157" elapsed="0.005797"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:08.499528" elapsed="0.396521"/>
</kw>
<msg time="2026-04-28T03:03:08.896104" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.498387" elapsed="0.397782"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:08.497303" elapsed="0.398943"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:03:06.362781" elapsed="2.533519"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:08.898462" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:08.898183" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:08.898160" elapsed="0.000386"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.898830" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:08.898950" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:08.898687" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:08.899506" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:08.899123" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.900086" level="INFO">${conn_id} = 47</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:08.899699" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:08.901009" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:08.901107" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:08.900694" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.901282" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:08.902572" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:09.230535" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:08 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:08.902221" elapsed="0.328461"/>
</kw>
<msg time="2026-04-28T03:03:09.230765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.901783" elapsed="0.329078"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:08.900345" elapsed="0.330647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.231529" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:03:09.253746" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:09.254077" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:09.254180" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:09.231220" elapsed="0.023010"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:09.254594" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:09.256134" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:09.255479" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:09.256695" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:09.256405" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:09.256354" elapsed="0.000498"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:09.257251" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:03:09.257007" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:09.256970" elapsed="0.000473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:09.257520" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.262928" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:09.263625" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:09.264059" elapsed="0.000140"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:09.258250" elapsed="0.006022"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:08.897607" elapsed="0.366790"/>
</kw>
<msg time="2026-04-28T03:03:09.264471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:08.897043" elapsed="0.367514"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:08.896534" elapsed="0.368131"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:09.267602" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:09.267238" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:09.267212" elapsed="0.000503"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.268120" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:09.268264" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:09.267909" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:09.269048" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:09.268497" elapsed="0.000616"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.269821" level="INFO">${conn_id} = 49</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:09.269315" elapsed="0.000570"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:09.271061" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:09.271168" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:09.270661" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.271405" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.273040" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:09.646455" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:09 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:09.272577" elapsed="0.374108"/>
</kw>
<msg time="2026-04-28T03:03:09.646766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.272091" elapsed="0.374765"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:09.270197" elapsed="0.376780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.647441" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:03:09.909365" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:09.909721" level="INFO">${stdout} =  * Exiting ovs-vswitchd (898)
 * Exiting ovsdb-server (856)</msg>
<msg time="2026-04-28T03:03:09.909819" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:09.647203" elapsed="0.262668"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:09.910335" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:09.911824" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:09.911216" elapsed="0.000704"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:09.912397" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:09.912116" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:09.912068" elapsed="0.000481"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:09.912890" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-28T03:03:09.912663" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:09.912631" elapsed="0.000480"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:09.913186" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.918682" elapsed="0.000346"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:09.919182" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:09.919480" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:09.913867" elapsed="0.005761"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:09.266541" elapsed="0.653176"/>
</kw>
<msg time="2026-04-28T03:03:09.919772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.265574" elapsed="0.654261"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:09.264930" elapsed="0.654982"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:09.921901" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:09.921636" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:09.921617" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.922274" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:09.922375" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:09.922137" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:09.922920" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:09.922543" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.923488" level="INFO">${conn_id} = 51</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:09.923126" elapsed="0.000387"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:09.924339" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:09.924416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:09.924067" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.924653" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:09.925848" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:10.269900" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:09 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:09.925514" elapsed="0.344546"/>
</kw>
<msg time="2026-04-28T03:03:10.270138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.925161" elapsed="0.345067"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:09.923718" elapsed="0.346614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:10.270786" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:03:10.293619" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:10.293853" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:10.293985" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:10.270556" elapsed="0.023483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:10.294379" elapsed="0.000442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.295808" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:10.295224" elapsed="0.000677"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:10.296371" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:10.296097" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.296050" elapsed="0.000473"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:10.296864" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-28T03:03:10.296636" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.296604" elapsed="0.000474"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:10.297152" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:10.302767" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:10.303827" elapsed="0.000364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:10.304496" elapsed="0.000211"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:10.297852" elapsed="0.006965"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:09.921133" elapsed="0.383910"/>
</kw>
<msg time="2026-04-28T03:03:10.305160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:09.920568" elapsed="0.384724"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:09.920119" elapsed="0.385376"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:10.309867" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:10.309249" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.309210" elapsed="0.000869"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:10.310547" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:10.310649" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:10.310386" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.311279" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:10.310881" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:10.311836" level="INFO">${conn_id} = 53</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:10.311473" elapsed="0.000389"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.312689" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:10.312767" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:10.312417" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:10.312951" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:10.314169" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:10.661635" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:10 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:10.313836" elapsed="0.347941"/>
</kw>
<msg time="2026-04-28T03:03:10.661855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:10.313442" elapsed="0.348525"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:10.312084" elapsed="0.349994"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:10.662540" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:03:10.831363" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:10.831752" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:03:10.831857" level="INFO">${stderr} = 2026-04-28T03:03:10Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:10Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:10Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:10.662295" elapsed="0.169619"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:10.832438" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.834330" level="INFO">2026-04-28T03:03:10Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:10Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:10Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:10.833655" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:10.834907" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:10.834609" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.834557" elapsed="0.000543"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:10.835451" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:03:10.835217" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.835183" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:10.835721" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:10.841554" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:10.842058" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:10.842362" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:10.836441" elapsed="0.006069"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:10.308158" elapsed="0.534444"/>
</kw>
<msg time="2026-04-28T03:03:10.842740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:10.306909" elapsed="0.535899"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:10.305912" elapsed="0.536975"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:03:06.362466" elapsed="4.480497"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:10.857224" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:10.857296" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:10.843299" elapsed="0.014099"/>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br1</var>
<status status="PASS" start="2026-04-28T03:03:10.843173" elapsed="0.014285"/>
</iter>
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:10.870352" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:10.870839" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '352'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br2']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:10.857774" elapsed="0.013216"/>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F9a5df812-eb49-4477-a37e-2d464c02791d%2Fbridge%2Fovscon_br2</var>
<status status="PASS" start="2026-04-28T03:03:10.857591" elapsed="0.013460"/>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="PASS" start="2026-04-28T03:03:10.843026" elapsed="0.028071"/>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:10.882147" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:10.882417" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:10.882658" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:10.871723" elapsed="0.011003"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.890959" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:10.890018" elapsed="0.000992"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:10.887292" elapsed="0.003788"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:10.891322" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:10.891119" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.887263" elapsed="0.004177"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.892038" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:10.891636" elapsed="0.000572"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:10.892277" elapsed="0.000060"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:10.883413" elapsed="0.009082"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:10.903823" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01xvjjmsf2wmhy1jyo28q2zgjcy0.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:10.907136" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:10.907490" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:10.892725" elapsed="0.014832"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.917175" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:10.916222" elapsed="0.000984"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:10.914149" elapsed="0.003103"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:10.917439" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:10.917286" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:10.914122" elapsed="0.003405"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:10.917984" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:10.917677" elapsed="0.000465"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:10.918193" elapsed="0.000039"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:10.908401" elapsed="0.009948"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:03:10.871415" elapsed="0.046992"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:10.918637" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-28T03:03:10.918557" elapsed="0.000180"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:03:06.362002" elapsed="4.556789"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:03:06.360819" elapsed="4.558026"/>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-28T03:02:46.831557" elapsed="24.087323"/>
</suite>
<suite id="s1-s2" name="Configure Exit Ovsdb Node" source="/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot">
<kw name="Suite Setup" owner="OVSDB" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.003305" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:10.999330" elapsed="0.004033"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-28T03:03:10.999097" elapsed="0.004337"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.008118" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:03:11.004547" elapsed="0.003600"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:11.008360" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.008235" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.008211" elapsed="0.000217"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.008956" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:11.008577" elapsed="0.000424"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.009489" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:03:11.009168" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-28T03:03:11.010145" elapsed="0.000293"/>
</kw>
<msg time="2026-04-28T03:03:11.010535" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:11.010582" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.009792" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.011150" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:11.010764" elapsed="0.000412"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.012147" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:11.011863" elapsed="0.000310"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.012574" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:11.012312" elapsed="0.000288"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.013079" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.012747" elapsed="0.000359"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.015976" elapsed="0.000219"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.016671" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:11.016344" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.016839" elapsed="0.000264"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.017864" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:11.017571" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-28T03:03:11.017948" elapsed="0.000040"/>
</return>
<msg time="2026-04-28T03:03:11.018111" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.017290" elapsed="0.000845"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:11.018880" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.159:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b6451e83d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:03:11.018280" elapsed="0.000761"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.019266" elapsed="0.000199"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-28T03:03:11.015412" elapsed="0.004118"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:11.015231" elapsed="0.004344"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-28T03:03:11.013164" elapsed="0.006443"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.020181" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:11.019762" elapsed="0.000463"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.020776" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.159'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:11.020377" elapsed="0.000442"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.021384" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:11.020987" elapsed="0.000438"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-28T03:03:11.011420" elapsed="0.010063"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-28T03:03:11.004201" elapsed="0.017338"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.021720" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.021607" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.021587" elapsed="0.000199"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.024684" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:11.024308" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.025209" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:11.024857" elapsed="0.000378"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:11.025279" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:11.025431" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:11.023993" elapsed="0.001463"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:11.026444" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.026179" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.027213" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:11.027323" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.027049" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.030696" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:11.030129" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.030110" elapsed="0.000709"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.031483" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:11.031723" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.031033" elapsed="0.000741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.032712" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.032050" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.034063" level="INFO">${conn_id} = 55</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.033163" elapsed="0.000952"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.036003" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:11.036183" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:11.035478" elapsed="0.000751"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.036572" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.038243" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:11.369335" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:45 UTC 2026

  System load:  0.81               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:06 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:11.037892" elapsed="0.331623"/>
</kw>
<msg time="2026-04-28T03:03:11.369598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.037447" elapsed="0.332329"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:11.034553" elapsed="0.335402"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.370860" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-28T03:03:11.384126" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-28T03:03:11.384530" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:11.384775" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:11.370332" elapsed="0.014589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.385719" elapsed="0.001298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.389717" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.388394" elapsed="0.001498"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.390658" elapsed="0.000085"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.390227" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.390189" elapsed="0.000735"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:11.391431" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-28T03:03:11.391070" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.391046" elapsed="0.000683"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.391823" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.396620" elapsed="0.000742"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.397792" elapsed="0.000657"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.398847" elapsed="0.000379"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.392580" elapsed="0.006752"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:11.029183" elapsed="0.370422"/>
</kw>
<msg time="2026-04-28T03:03:11.399688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.028484" elapsed="0.371284"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:03:11.028004" elapsed="0.371878"/>
</kw>
<msg time="2026-04-28T03:03:11.400076" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.027494" elapsed="0.372655"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.403180" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.403655" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.403959" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.400571" elapsed="0.003538"/>
</kw>
<msg time="2026-04-28T03:03:11.404200" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-28T03:03:11.026686" elapsed="0.377538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.404657" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.404405" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:03:11.404740" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-28T03:03:11.025812" elapsed="0.379069"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:11.025635" elapsed="0.379282"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:11.025511" elapsed="0.379459"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-28T03:03:11.022013" elapsed="0.383017"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:03:11.405176" elapsed="0.000210"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.420185" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.420070" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.420049" elapsed="0.000209"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.420543" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:11.420647" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.420403" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.421121" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.420815" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.421547" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.421308" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:11.422344" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:03:11.422112" elapsed="0.000352">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-28T03:03:11.422571" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:03:11.422616" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.421737" elapsed="0.000902"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.422926" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:11.422714" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.422697" elapsed="0.000344"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:11.423759" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.423495" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:03:11.423831" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:11.423998" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.423237" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.424168" elapsed="0.000400"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.425203" level="INFO">index=58
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:11.425305" level="INFO">${karaf_connection_object} = index=58
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.425080" elapsed="0.000251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.425472" elapsed="0.002089"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.427992" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:03:11.667187" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.427716" elapsed="0.239648"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.670921" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.671460" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.671764" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.668465" elapsed="0.003456"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:11.667767" elapsed="0.004228"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.419757" elapsed="0.252291"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:11.406170" elapsed="0.265929"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.405724" elapsed="0.266429"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:11.405595" elapsed="0.266600"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-28T03:03:11.405444" elapsed="0.266787"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-28T03:03:11.003741" elapsed="0.668551"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.674825" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.674709" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.674686" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.679274" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.679170" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.679152" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.680279" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:11.679873" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.680762" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:11.680454" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:11.680833" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:03:11.681009" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:11.679554" elapsed="0.001479"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.686088" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.685980" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.685961" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.687325" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.687200" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.687184" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:11.687843" level="INFO">${karaf_connection_index} = 58</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.687525" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.688261" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:11.688033" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.735863" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "v "s "[78Cd "[A[78Cb</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:11.688945" elapsed="0.047123"/>
</kw>
<msg time="2026-04-28T03:03:11.736224" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:11.736270" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.688436" elapsed="0.047869"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.792700" level="INFO">"- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "3 "0 "_ "_ "c "o "n "f "i "g "u "r "e "_ "e "x "i "t "_ "o "v "s "d "b "_ "n "o "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:11.737113" elapsed="0.055841"/>
</kw>
<msg time="2026-04-28T03:03:11.793140" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:11.793188" level="INFO">${message_wait} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.736493" elapsed="0.056730"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.793658" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:11.793337" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.793306" elapsed="0.000529"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.794416" level="INFO"> "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "3 "0 "_ "_ "c "o "n "f "i "g "u "r "e "_ "e "x "i "t "_ "o "v "s "d "b "_ "n "o "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.793999" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.794797" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:11.794573" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.794555" elapsed="0.000433"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:11.795026" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:11.797285" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.798083" elapsed="0.000304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.798703" elapsed="0.000402"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.796472" elapsed="0.002727"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:11.795318" elapsed="0.004011"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:11.686895" elapsed="0.112536"/>
</kw>
<msg time="2026-04-28T03:03:11.799524" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:11.799567" level="INFO">${message} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.686296" elapsed="0.113306"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:11.799851" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:11.799742" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.799723" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.800349" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.800687" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.800759" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:11.685615" elapsed="0.115249"/>
</kw>
<msg time="2026-04-28T03:03:11.800973" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:11.801017" level="INFO">${output} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.681394" elapsed="0.119657"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:11.801362" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:11.801125" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.801108" elapsed="0.000329"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:11.681263" elapsed="0.120198"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:11.681089" elapsed="0.120403"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:11.678873" elapsed="0.122677"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-28T03:03:11.672905" elapsed="0.128699"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.672440" elapsed="0.129206"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-28T03:03:10.998675" elapsed="0.803023"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:11.815090" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:11.814969" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.814948" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.815476" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:11.815584" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.815318" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.816045" level="INFO">{1: 58}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.815755" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:11.816522" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:11.816270" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.817123" elapsed="0.000185"/>
</kw>
<msg time="2026-04-28T03:03:11.817407" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:11.817453" level="INFO">${old_connection_index} = 58</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.816735" elapsed="0.000740"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:11.818290" elapsed="0.000137"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.833239" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:11.818899" elapsed="0.014400"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.818582" elapsed="0.014767"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.833826" elapsed="0.000431"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:11.833512" elapsed="0.000825"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:03:11.817766" elapsed="0.016620"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:11.817556" elapsed="0.016940"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:11.817539" elapsed="0.016989"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:11.835296" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.835025" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:03:11.835369" elapsed="0.000033"/>
</return>
<msg time="2026-04-28T03:03:11.835523" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:03:11.834737" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.835786" elapsed="0.000422"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.836476" level="INFO">index=61
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:11.836576" level="INFO">${karaf_connection_object} = index=61
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.836367" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.836757" elapsed="0.002292"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:03:11.839465" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:03:12.000439" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:03:11.839206" elapsed="0.161319"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.003412" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:12.003872" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:12.004175" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:12.001341" elapsed="0.002981"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:12.000793" elapsed="0.003574"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:03:11.813364" elapsed="0.191053"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:12.004908" level="INFO">Creating Session using : alias=session, url=http://10.30.170.159:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b6451bdb50&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:03:12.004556" elapsed="0.000542"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:12.016398" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:12.016612" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Mon, 27-Apr-2026 03:03:12 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:12.016979" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:12.005515" elapsed="0.011531"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.027159" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:12.026552" elapsed="0.000636"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:12.022968" elapsed="0.004260"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.027397" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.027255" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.022890" elapsed="0.004590"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.027863" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:12.027615" elapsed="0.000301"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:12.027975" elapsed="0.000035"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:12.017688" elapsed="0.010420"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:12.038765" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:12.038971" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:12.039090" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:12.028247" elapsed="0.010869"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.044149" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:12.043409" elapsed="0.000769"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:12.041557" elapsed="0.002661"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.044385" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.044244" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.041539" elapsed="0.002952"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.044904" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:12.044649" elapsed="0.000357"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:12.045050" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:12.039380" elapsed="0.005797"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:03:12.005312" elapsed="0.039917"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:10.998372" elapsed="1.046905"/>
</kw>
<test id="s1-s2-t1" name="Create a Topology in OVSDB node" line="26">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:12.048245" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:12.047989" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.049530" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:12.049420" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.049402" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.054116" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:12.054010" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.053992" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.055155" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:12.054760" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.055662" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:12.055364" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:12.055733" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:12.055887" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:12.054398" elapsed="0.001514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.061227" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:12.061118" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.061099" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.062436" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:12.062330" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.062312" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:12.062928" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:12.062637" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.063333" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:12.063123" elapsed="0.000235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.101271" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:12.063835" elapsed="0.037541"/>
</kw>
<msg time="2026-04-28T03:03:12.101538" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:12.101583" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:12.063508" elapsed="0.038111"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.161851" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "a "[C "T "o "p "o "l "o "g "y "[C "i "n "[C "O "V "S "D "B "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:12.102130" elapsed="0.059854"/>
</kw>
<msg time="2026-04-28T03:03:12.162161" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:12.162207" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:12.101778" elapsed="0.060466"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.162545" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.162323" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.162303" elapsed="0.000321"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.163073" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "a "[C "T "o "p "o "l "o "g "y "[C "i "n "[C "O "V "S "D "B "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:12.162755" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.163422" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.163217" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.163200" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:12.163532" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.164957" elapsed="0.000757"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:12.165995" elapsed="0.000451"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:12.166697" elapsed="0.000378"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:12.164316" elapsed="0.002858"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:12.163786" elapsed="0.003499"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:12.062030" elapsed="0.105353"/>
</kw>
<msg time="2026-04-28T03:03:12.167475" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:12.167520" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:12.061436" elapsed="0.106123"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:12.167742" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:12.167635" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.167617" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.168256" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.168615" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.168685" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:12.060765" elapsed="0.108027"/>
</kw>
<msg time="2026-04-28T03:03:12.168884" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:12.168926" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:12.056292" elapsed="0.112686"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.169295" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.169053" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.169036" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:12.056159" elapsed="0.113233"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:12.055984" elapsed="0.113438"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:12.053640" elapsed="0.115835"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:12.049135" elapsed="0.120393"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:12.048681" elapsed="0.120891"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:12.046002" elapsed="0.123620"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.171665" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.171412" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.171392" elapsed="0.000351"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.172216" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:12.172321" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:12.171879" elapsed="0.000468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.172883" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:12.172506" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.173455" level="INFO">${conn_id} = 64</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:12.173091" elapsed="0.000389"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.174369" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:12.174445" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:12.174093" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.174687" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.175963" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:12.563484" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:10 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:12.175637" elapsed="0.388003"/>
</kw>
<msg time="2026-04-28T03:03:12.563722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.175292" elapsed="0.388506"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:12.173691" elapsed="0.390218"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.564419" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:03:12.586582" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:12.586698" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:12.586742" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:12.564154" elapsed="0.022611"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:12.586926" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.587671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:12.587379" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.587960" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:12.587797" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.587772" elapsed="0.000262"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:12.588196" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:12.588089" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.588073" elapsed="0.000206"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:12.588332" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.591112" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:12.591588" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:12.591888" elapsed="0.000116"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:12.588643" elapsed="0.003413"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:12.170862" elapsed="0.421284"/>
</kw>
<msg time="2026-04-28T03:03:12.592199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.170314" elapsed="0.421932"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:12.169813" elapsed="0.422540"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:12.594426" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:12.594166" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:12.594147" elapsed="0.000359"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.594776" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:12.594876" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:12.594642" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.595514" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovsconf_exit_br" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:12.595129" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.596093" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:12.595712" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:12.597007" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:12.597084" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:12.596720" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.597252" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:12.598403" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:13.002836" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:12 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:12.598092" elapsed="0.404925"/>
</kw>
<msg time="2026-04-28T03:03:13.003104" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.597733" elapsed="0.405452"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:12.596341" elapsed="0.406956"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.003799" level="INFO">Executing command 'sudo ovs-vsctl add-br ovsconf_exit_br'.</msg>
<msg time="2026-04-28T03:03:13.104384" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:13.104751" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:13.104856" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:13.003558" elapsed="0.101355"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.105419" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.107595" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:13.106905" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.108239" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.107858" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.107811" elapsed="0.000586"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:13.108677" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-28T03:03:13.108514" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.108480" elapsed="0.000319"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.108847" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.112415" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:13.113097" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.113510" elapsed="0.000142"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:13.109303" elapsed="0.004423"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:12.593632" elapsed="0.520220"/>
</kw>
<msg time="2026-04-28T03:03:13.113926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:12.593086" elapsed="0.520929"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-br ${BRIDGE}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:12.592551" elapsed="0.521655"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:13.117366" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:13.117010" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.116985" elapsed="0.000491"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.117852" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:13.118015" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.117667" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.118783" level="INFO">Attempting to execute command "sudo ovs-vsctl add-port ovsconf_exit_br vx1 -- set Interface vx1 type=vxlan options:remote_ip=192.168.1.11" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:13.118251" elapsed="0.000597"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.119576" level="INFO">${conn_id} = 68</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:13.119073" elapsed="0.000539"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.120800" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:13.120876" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:13.120493" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.121063" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.122204" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:13.454044" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:12 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:13.121872" elapsed="0.332365"/>
</kw>
<msg time="2026-04-28T03:03:13.454330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.121531" elapsed="0.332881"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:13.119899" elapsed="0.334632"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.455026" level="INFO">Executing command 'sudo ovs-vsctl add-port ovsconf_exit_br vx1 -- set Interface vx1 type=vxlan options:remote_ip=192.168.1.11'.</msg>
<msg time="2026-04-28T03:03:13.512293" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:13.512545" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:13.512645" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:13.454764" elapsed="0.057931"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.513085" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.514618" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:13.514000" elapsed="0.000713"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.515247" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.514915" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.514847" elapsed="0.000559"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:13.515755" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:03:13.515522" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.515490" elapsed="0.000516"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.516082" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.521878" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:13.523111" elapsed="0.000349"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.523776" elapsed="0.000303"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:13.516754" elapsed="0.007443"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:13.116245" elapsed="0.408158"/>
</kw>
<msg time="2026-04-28T03:03:13.524521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.115451" elapsed="0.409163"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-port ${BRIDGE} ${PORT1} -- set Interface ${PORT1} type=vxlan options:remote_ip=192.168.1.11</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:13.114474" elapsed="0.410221"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:13.526759" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:13.526500" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.526482" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.527126" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:13.527228" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.526992" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.527832" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:13.527397" elapsed="0.000501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.528428" level="INFO">${conn_id} = 70</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:13.528063" elapsed="0.000391"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.529356" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:13.529433" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:13.529069" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.529603" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.530739" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:13.916439" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:13 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:13.530427" elapsed="0.386171"/>
</kw>
<msg time="2026-04-28T03:03:13.916684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.530087" elapsed="0.386676"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:13.528668" elapsed="0.388209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.917362" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:03:13.950186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:13.950429" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:13.950524" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:13.917127" elapsed="0.033447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.951105" elapsed="0.000450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.952595" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:13.951992" elapsed="0.000696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.953227" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.952852" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.952805" elapsed="0.000577"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:13.953722" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:03:13.953496" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.953464" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.954013" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.959902" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:13.960771" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:13.961083" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:13.954667" elapsed="0.006565"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:13.525974" elapsed="0.435349"/>
</kw>
<msg time="2026-04-28T03:03:13.961377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:13.525400" elapsed="0.436025"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:6634</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:13.524891" elapsed="0.436615"/>
</kw>
<doc>Create topology in OVSDB and ready it for further tests</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:12.045337" elapsed="1.916285"/>
</test>
<test id="s1-s2-t2" name="Connect to OVSDB Node" line="35">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:13.964803" elapsed="0.000227"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:13.964545" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.966070" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.965954" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.965922" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.970617" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.970500" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.970483" elapsed="0.000200"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.971701" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:13.971282" elapsed="0.000446"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:13.972190" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:13.971879" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:13.972259" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:13.972419" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:13.970894" elapsed="0.001549"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.977693" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.977585" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.977567" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:13.978916" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:13.978811" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:13.978794" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:13.979489" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:13.979140" elapsed="0.000376"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:13.979913" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:13.979685" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:14.020765" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:13.980434" elapsed="0.040464"/>
</kw>
<msg time="2026-04-28T03:03:14.021108" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:14.021155" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:13.980109" elapsed="0.041081"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:14.063665" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:14.021748" elapsed="0.042043"/>
</kw>
<msg time="2026-04-28T03:03:14.063972" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:14.064020" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:14.021379" elapsed="0.042676"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.064376" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.064143" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.064120" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.064890" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:14.064592" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.065249" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.065045" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.065028" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:14.065358" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:14.066794" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:14.067860" elapsed="0.000479"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:14.068592" elapsed="0.000374"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:14.066183" elapsed="0.002884"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:14.065635" elapsed="0.003494"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:13.978514" elapsed="0.090713"/>
</kw>
<msg time="2026-04-28T03:03:14.069320" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:14.069364" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:13.977900" elapsed="0.091499"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:14.069579" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:14.069474" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.069456" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.070071" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.070396" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:14.070519" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:13.977250" elapsed="0.093381"/>
</kw>
<msg time="2026-04-28T03:03:14.070724" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:14.070772" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:13.972803" elapsed="0.098005"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.071138" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.070883" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.070866" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:13.972670" elapsed="0.098571"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:13.972498" elapsed="0.098776"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:13.970147" elapsed="0.101183"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:13.965645" elapsed="0.105738"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:13.965226" elapsed="0.106203"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:13.962540" elapsed="0.108940"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:14.072299" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:14.072489" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:14.072117" elapsed="0.000399"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:14.072905" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:14.072662" elapsed="0.000289"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:14.073329" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:14.073101" elapsed="0.000254"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.073850" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:14.073503" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.074286" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:14.074034" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.074711" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:14.074471" elapsed="0.000285"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:14.092435" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:14.092510" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:14.092654" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:14.074904" elapsed="0.017787"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.099281" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.096346" elapsed="0.003074"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.102505" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:14.099683" elapsed="0.002860"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:14.099458" elapsed="0.003135"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.096319" elapsed="0.006305"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.103187" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:14.102815" elapsed="0.000432"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:14.103307" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:14.093113" elapsed="0.010369"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:14.104062" elapsed="0.003260"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:03:14.071735" elapsed="0.035682"/>
</kw>
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:13.962020" elapsed="0.145578"/>
</test>
<test id="s1-s2-t3" name="Get Operational Topology" line="39">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:14.111063" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:14.110800" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:14.112305" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:14.112194" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.112176" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:14.116832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:14.116726" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.116708" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.117865" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:14.117492" elapsed="0.000399"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.118363" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:14.118056" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:14.118457" elapsed="0.000037"/>
</return>
<msg time="2026-04-28T03:03:14.118628" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:14.117128" elapsed="0.001525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:14.124108" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:14.124000" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.123982" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:14.125303" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:14.125198" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.125180" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:14.125793" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:14.125499" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:14.126197" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:14.125984" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:14.163923" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:14.126689" elapsed="0.037352"/>
</kw>
<msg time="2026-04-28T03:03:14.164221" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:14.164268" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:14.126369" elapsed="0.037935"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:14.204048" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:14.164795" elapsed="0.039379"/>
</kw>
<msg time="2026-04-28T03:03:14.204404" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:14.204450" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:14.164466" elapsed="0.040021"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.204815" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.204575" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.204552" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.205381" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:14.205056" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.205725" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.205521" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.205504" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:14.205833" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:14.207310" elapsed="0.000810"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:14.208386" elapsed="0.000453"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:14.209106" elapsed="0.000351"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:14.206668" elapsed="0.002887"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:14.206132" elapsed="0.003489"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:14.124877" elapsed="0.084844"/>
</kw>
<msg time="2026-04-28T03:03:14.209812" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:14.209857" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:14.124317" elapsed="0.085578"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:14.210105" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:14.209997" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.209979" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.210581" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.210905" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:14.210993" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:14.123650" elapsed="0.087451"/>
</kw>
<msg time="2026-04-28T03:03:14.211194" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:14.211237" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:14.119202" elapsed="0.092073"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.211608" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.211350" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.211333" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:14.119065" elapsed="0.092644"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:14.118708" elapsed="0.093031"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:14.116373" elapsed="0.095421"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:14.111887" elapsed="0.099964"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:14.111462" elapsed="0.100483"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:14.108830" elapsed="0.103174"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:14.231802" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:14.232281" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:14.232525" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:14.220036" elapsed="0.012546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.242341" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:14.241574" elapsed="0.000796"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:14.238510" elapsed="0.003900"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.242646" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.242436" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.238471" elapsed="0.004256"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.243142" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:14.242870" elapsed="0.000389"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:14.243304" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:14.233440" elapsed="0.009989"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:14.232753" elapsed="0.010707"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:14.243640" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:14.243483" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:14.232713" elapsed="0.011000"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:14.243843" elapsed="0.000185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:14.246735" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:14.244356" elapsed="0.002475">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:14.244214" elapsed="0.002707">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:14.244084" elapsed="0.002955">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:14.219579" elapsed="0.027585">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:16.269443" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:16.269670" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:16.269853" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:16.259707" elapsed="0.010174"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:16.275828" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:16.274956" elapsed="0.000913"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:16.272992" elapsed="0.002935"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:16.276190" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:16.275988" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:16.272971" elapsed="0.003327"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:16.276837" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:16.276484" elapsed="0.000494"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:16.277044" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:16.270358" elapsed="0.006875"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:16.270005" elapsed="0.007272"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:16.277504" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:16.277311" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:16.269979" elapsed="0.007670"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:16.277838" elapsed="0.000255"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:16.281983" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:16.278604" elapsed="0.003514">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:16.278359" elapsed="0.003882">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:16.278174" elapsed="0.004206">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:16.259118" elapsed="0.023513">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:18.309661" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:18.310167" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:18.310545" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:18.297127" elapsed="0.013478"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:18.321053" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:18.320216" elapsed="0.000867"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:18.317697" elapsed="0.003427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:18.321293" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:18.321151" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:18.317652" elapsed="0.003718"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:18.321784" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:18.321500" elapsed="0.000372"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:18.321920" elapsed="0.000055"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:18.311621" elapsed="0.010458"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:18.310808" elapsed="0.011302"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:18.322271" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:18.322134" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:18.310758" elapsed="0.011616"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:18.322510" elapsed="0.000171"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:18.325725" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:18.323061" elapsed="0.002761">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:18.322879" elapsed="0.003199">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:18.322742" elapsed="0.003438">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:18.296282" elapsed="0.030018">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:20.355843" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:20.356225" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:20.356545" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:20.343265" elapsed="0.013333"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:20.365860" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:20.364576" elapsed="0.001332"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:20.361819" elapsed="0.004183"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:20.366286" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:20.366046" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:20.361788" elapsed="0.004618"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:20.367024" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:20.366611" elapsed="0.000567"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:20.367251" elapsed="0.000053"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:20.357553" elapsed="0.009904"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:20.356844" elapsed="0.010660"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:20.367753" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:20.367541" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:20.356789" elapsed="0.011165"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:20.368196" elapsed="0.000266"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:20.372929" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:20.369041" elapsed="0.004009">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:20.368775" elapsed="0.004369">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:20.368553" elapsed="0.004707">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:20.342605" elapsed="0.030779">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:22.397685" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:22.398010" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:22.398247" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:22.385973" elapsed="0.012313"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.406319" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:22.405188" elapsed="0.001173"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.402510" elapsed="0.003911"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.406658" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.406459" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.402484" elapsed="0.004283"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.407332" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.406973" elapsed="0.000478"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:22.407515" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:22.398919" elapsed="0.008836"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.398424" elapsed="0.009378"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.408014" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.407836" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.398390" elapsed="0.009740"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:22.408268" elapsed="0.000171"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.411206" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:22.408792" elapsed="0.002510">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:22.408631" elapsed="0.002760">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:22.408498" elapsed="0.002993">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:22.385387" elapsed="0.026224">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<msg time="2026-04-28T03:03:22.411799" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:03:14.212164" elapsed="8.199840">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.413290" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:22.412822" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:22.413533" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.413391" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.413373" elapsed="0.000222"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:03:22.413751" elapsed="0.000229"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.414842" level="FAIL">'5221' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:22.414506" elapsed="0.000394">'5221' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:03:22.415009" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:03:22.414158" elapsed="0.000875"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.415547" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:22.415194" elapsed="0.000379"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.416057" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:22.415741" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.416530" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:22.416229" elapsed="0.000327"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.417087" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:03:22.416699" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.417582" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.417341" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.418281" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5221'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:03:22.417921" elapsed="0.000407"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.417692" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.417674" elapsed="0.000712"/>
</if>
<arg>5221</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:22.412476" elapsed="0.005955"/>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5221</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:03:14.108037" elapsed="8.310439">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</test>
<test id="s1-s2-t4" name="Verify Bridge Port Not In Config DS" line="50">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:22.422067" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:22.421794" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.423301" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.423192" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.423173" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.427891" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.427783" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.427766" elapsed="0.000212"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.428967" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:22.428571" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.429439" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:22.429146" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:22.429508" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:22.429747" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:22.428196" elapsed="0.001585"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.434843" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.434737" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.434719" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.436148" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.436038" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.436020" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:22.436649" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.436350" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.437062" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:22.436824" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.471710" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:22.437566" elapsed="0.034365"/>
</kw>
<msg time="2026-04-28T03:03:22.472189" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:22.472238" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.437240" elapsed="0.035034"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.523436" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f "y "[C "B "r "i "d "g "e "[C "P "o "r "t "[C "N "o "t "[C "I "n "[C "C "o "n "f "i "g "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:22.472980" elapsed="0.050719"/>
</kw>
<msg time="2026-04-28T03:03:22.523974" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:22.524025" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.472518" elapsed="0.051546"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.524518" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.524192" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.524153" elapsed="0.000453"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.525148" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f "y "[C "B "r "i "d "g "e "[C "P "o "r "t "[C "N "o "t "[C "I "n "[C "C "o "n "f "i "g "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.524740" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.525502" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.525295" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.525277" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:22.525615" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:22.527171" elapsed="0.000796"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.528236" elapsed="0.000465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:22.528977" elapsed="0.000357"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:22.526518" elapsed="0.002916"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:22.525948" elapsed="0.003550"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:22.435673" elapsed="0.093926"/>
</kw>
<msg time="2026-04-28T03:03:22.529696" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:22.529740" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.435068" elapsed="0.094709"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:22.529986" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:22.529853" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.529836" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.530474" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.530879" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.530967" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:22.434402" elapsed="0.096675"/>
</kw>
<msg time="2026-04-28T03:03:22.531173" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:22.531216" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.430166" elapsed="0.101088"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.531605" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.531330" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.531313" elapsed="0.000373"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:22.430028" elapsed="0.101681"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:22.429836" elapsed="0.101908"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:22.427400" elapsed="0.104405"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:22.422887" elapsed="0.108977"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.422474" elapsed="0.109443"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:22.419558" elapsed="0.112437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.532471" level="INFO">@{list} = [ vx1 ]</msg>
<var>@{list}</var>
<arg>${PORT1}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:22.532154" elapsed="0.000343"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:22.553299" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:22.553817" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:22.553968" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:22.544240" elapsed="0.009769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.562070" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:22.561127" elapsed="0.000986"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.557924" elapsed="0.004250"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.562424" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.562214" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.557898" elapsed="0.004640"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.563132" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.562741" elapsed="0.000547"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:22.563354" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:22.554609" elapsed="0.008936"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.554134" elapsed="0.009497"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.563872" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.563667" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.554104" elapsed="0.009868"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:22.564202" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.564168" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:22.564153" elapsed="0.000109"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:22.564037" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.564020" elapsed="0.000284"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:22.564437" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:22.564987" elapsed="0.002303"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:03:22.564798" elapsed="0.002533"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:22.564664" elapsed="0.002697"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:22.543752" elapsed="0.023664"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:22.532649" elapsed="0.034819"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:22.418878" elapsed="0.148751"/>
</test>
<test id="s1-s2-t5" name="Create bridge of already added bridge" line="61">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:22.570823" elapsed="0.000243"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:22.570572" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.572121" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.572010" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.571990" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.576675" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.576567" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.576550" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.577739" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:22.577355" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.578230" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:22.577919" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:22.578300" elapsed="0.000032"/>
</return>
<msg time="2026-04-28T03:03:22.578455" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:22.576976" elapsed="0.001504"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.583765" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.583655" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.583636" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.585004" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.584871" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.584854" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:22.585499" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.585203" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.585886" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:22.585671" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.651652" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:22.586401" elapsed="0.065789"/>
</kw>
<msg time="2026-04-28T03:03:22.652416" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:22.652465" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.586079" elapsed="0.066423"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.717188" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "b "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:22.653219" elapsed="0.064265"/>
</kw>
<msg time="2026-04-28T03:03:22.717786" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:22.717854" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.652741" elapsed="0.065170"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.718535" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.718106" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.718063" elapsed="0.000597"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.719408" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "b "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.718856" elapsed="0.000703"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.720001" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.719663" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.719638" elapsed="0.000480"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:22.720186" elapsed="0.000057"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:22.722669" elapsed="0.001395"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.724362" elapsed="0.000502"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:22.725196" elapsed="0.000359"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:22.721538" elapsed="0.004119"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:22.720660" elapsed="0.005065"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:22.584576" elapsed="0.141284"/>
</kw>
<msg time="2026-04-28T03:03:22.726010" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:22.726061" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.583996" elapsed="0.142116"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:22.726381" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-28T03:03:22.726232" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.726204" elapsed="0.000293"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.726982" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.727336" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.727407" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:22.583292" elapsed="0.144249"/>
</kw>
<msg time="2026-04-28T03:03:22.727641" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:22.727685" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.578840" elapsed="0.148884"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.728178" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.727911" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.727892" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:22.578703" elapsed="0.149577"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:22.578533" elapsed="0.149783"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:22.576212" elapsed="0.152167"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:22.571699" elapsed="0.156740"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.571263" elapsed="0.157223"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:22.568576" elapsed="0.159963"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:22.729595" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:22.729828" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:22.729408" elapsed="0.000455"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:22.730440" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.730116" elapsed="0.000360"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:22.731032" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.730676" elapsed="0.000393"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:22.731613" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.731273" elapsed="0.000375"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:22.732196" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-e...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.731856" elapsed="0.000378"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:22.732655" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-e...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.732421" elapsed="0.000262"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:22.733197" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-e...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.732843" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.734117" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:22.733380" elapsed="0.000764"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.734645" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:22.734294" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.735133" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.734817" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.736236" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000030"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.735318" elapsed="0.001248"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:22.761362" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '867', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000030"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:22.761491" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:22.761704" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:22.737084" elapsed="0.024677"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.772006" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.767716" elapsed="0.004355"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.774262" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:22.772240" elapsed="0.002048"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.772104" elapsed="0.002220"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.767663" elapsed="0.006683"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.774751" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.774488" elapsed="0.000307"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:22.774843" elapsed="0.000045"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:22.762497" elapsed="0.012512"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:22.775152" elapsed="0.002311"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE}</arg>
<arg>0000000000000030</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:03:22.728814" elapsed="0.048715"/>
</kw>
<doc>This will add bridge to the config datastore</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:22.568017" elapsed="0.209659"/>
</test>
<test id="s1-s2-t6" name="Get Config Topology with Bridge" line="69">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:22.781083" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:22.780803" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.782389" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.782264" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.782245" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.787182" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.787077" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.787059" elapsed="0.000202"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.788280" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:22.787884" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.788760" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:22.788457" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:22.788828" elapsed="0.000039"/>
</return>
<msg time="2026-04-28T03:03:22.789018" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:22.787500" elapsed="0.001550"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.794205" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.794079" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.794061" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.795555" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.795407" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.795389" elapsed="0.000233"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:22.796085" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.795760" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.796483" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:22.796264" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.840953" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:22.796998" elapsed="0.044115"/>
</kw>
<msg time="2026-04-28T03:03:22.841308" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:22.841356" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.796658" elapsed="0.044735"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.896427" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:22.842045" elapsed="0.054684"/>
</kw>
<msg time="2026-04-28T03:03:22.897075" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:22.897145" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.841585" elapsed="0.055616"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.897814" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.897370" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.897323" elapsed="0.000641"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.898708" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.898165" elapsed="0.000656"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.899244" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.898919" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.898893" elapsed="0.000464"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:22.899428" elapsed="0.000054"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:22.901652" elapsed="0.001226"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.903296" elapsed="0.003470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:22.907172" elapsed="0.000571"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:22.900703" elapsed="0.007189"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:22.899867" elapsed="0.008105"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:22.795089" elapsed="0.112983"/>
</kw>
<msg time="2026-04-28T03:03:22.908165" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:22.908208" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.794465" elapsed="0.113779"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:22.908430" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-28T03:03:22.908321" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.908302" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.908948" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.909343" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.909414" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:22.793727" elapsed="0.115793"/>
</kw>
<msg time="2026-04-28T03:03:22.909611" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:22.909652" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.789456" elapsed="0.120232"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.910106" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.909760" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.909743" elapsed="0.000440"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:22.789312" elapsed="0.120894"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:22.789111" elapsed="0.121128"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:22.786707" elapsed="0.123587"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:22.781962" elapsed="0.128385"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.781498" elapsed="0.128891"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:22.778698" elapsed="0.131741"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.910904" level="INFO">@{list} = [ ovsconf_exit_br ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:22.910590" elapsed="0.000339"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:22.927578" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:22.929056" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1124'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovsconf_exit_br","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000030"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:22.929330" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:22.918803" elapsed="0.010584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.940783" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:22.940019" elapsed="0.000794"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.935645" elapsed="0.005212"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.941049" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.940886" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.935605" elapsed="0.005524"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.941526" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
                        "ovsdb:bridge-name": "ovsconf_exit_br",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000030"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:22.941267" elapsed="0.000409"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:22.941728" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:22.930315" elapsed="0.011559"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:22.929571" elapsed="0.012335"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:22.942091" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:22.941931" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.929527" elapsed="0.012637"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:22.942297" elapsed="0.000172"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:22.942855" elapsed="0.002412"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:03:22.942686" elapsed="0.002621"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:22.942535" elapsed="0.002805"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:03:22.918356" elapsed="0.027041"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:22.911094" elapsed="0.034357"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:22.778036" elapsed="0.167543"/>
</test>
<test id="s1-s2-t7" name="Create Port of already added port in OVSDB" line="80">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:22.949586" elapsed="0.000268"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:22.949242" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.951442" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.951252" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.951224" elapsed="0.000324"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.957896" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.957756" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.957733" elapsed="0.000283"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.959472" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:22.958848" elapsed="0.000663"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:22.960218" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:22.959735" elapsed="0.000524"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:22.960327" elapsed="0.000049"/>
</return>
<msg time="2026-04-28T03:03:22.960559" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:22.958341" elapsed="0.002255"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.967952" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.967778" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.967751" elapsed="0.000299"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:22.969543" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:22.969433" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:22.969415" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:22.970083" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:22.969751" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:22.970491" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:22.970266" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.068875" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:22.971038" elapsed="0.098156"/>
</kw>
<msg time="2026-04-28T03:03:23.069481" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:23.069535" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.970677" elapsed="0.098901"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.136012" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "p "o "r "t "[C "i "n "[C "O "V "S "D "[78CB "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:23.070654" elapsed="0.065490"/>
</kw>
<msg time="2026-04-28T03:03:23.136315" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:23.136363" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.070109" elapsed="0.066291"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.136767" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.136505" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.136475" elapsed="0.000379"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.137337" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "p "o "r "t "[C "i "n "[C "O "V "S "D "[78CB "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:23.137013" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.137696" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.137487" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.137470" elapsed="0.000303"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:23.137809" elapsed="0.000073"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:23.139418" elapsed="0.000796"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.140488" elapsed="0.000490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:23.141240" elapsed="0.000358"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:23.138747" elapsed="0.002953"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:23.138180" elapsed="0.003585"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:22.969119" elapsed="0.172745"/>
</kw>
<msg time="2026-04-28T03:03:23.141984" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.142029" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.968251" elapsed="0.173815"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:23.142252" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:23.142144" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.142126" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.142742" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.143094" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.143166" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:22.967262" elapsed="0.176011"/>
</kw>
<msg time="2026-04-28T03:03:23.143378" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.143422" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.961156" elapsed="0.182304"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.143778" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.143536" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.143519" elapsed="0.000380"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:22.960955" elapsed="0.182995"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:22.960679" elapsed="0.183317"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:22.957308" elapsed="0.186759"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:22.950826" elapsed="0.193301"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:22.950160" elapsed="0.194012"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:22.946560" elapsed="0.197666"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:23.152048" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:23.152239" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:23.151866" elapsed="0.000399"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:23.152660" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.152415" elapsed="0.000272"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:23.153087" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.152838" elapsed="0.000276"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.153624" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:23.153267" elapsed="0.000383"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.154160" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:23.153799" elapsed="0.000388"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:23.177634" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '378', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "vx1",
            "tp-id": "vx1"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:23.177745" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:23.178003" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:23.154335" elapsed="0.023727"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:23.178416" elapsed="0.005221"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>10.0.0.10</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_exit_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:03:23.151388" elapsed="0.032389"/>
</kw>
<doc>This will add port/interface to the config datastore</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:22.945970" elapsed="0.238081"/>
</test>
<test id="s1-s2-t8" name="Get Config Topology with Bridge and Port" line="84">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:23.191170" elapsed="0.000505"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:23.190588" elapsed="0.001207"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.192834" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.192723" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.192704" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.197697" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.197591" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.197573" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.198739" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:23.198361" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.199231" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:23.198917" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:23.199313" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:23.199467" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:23.197996" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.204563" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.204458" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.204441" elapsed="0.000189"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.205751" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.205644" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.205626" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:23.206273" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.205975" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.206662" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:23.206450" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.232951" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:23.207189" elapsed="0.025879"/>
</kw>
<msg time="2026-04-28T03:03:23.233237" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:23.233283" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.206838" elapsed="0.026481"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.279089" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[C "a "n "d "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:23.233834" elapsed="0.045417"/>
</kw>
<msg time="2026-04-28T03:03:23.279431" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:23.279477" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.233488" elapsed="0.046027"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.279863" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.279607" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.279582" elapsed="0.000392"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.280444" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[C "a "n "d "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:23.280117" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.280801" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.280592" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.280574" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:23.280909" elapsed="0.000051"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:23.282432" elapsed="0.000810"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.283595" elapsed="0.000490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:23.284344" elapsed="0.000541"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:23.281776" elapsed="0.003235"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:23.281219" elapsed="0.003856"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:23.205345" elapsed="0.079832"/>
</kw>
<msg time="2026-04-28T03:03:23.285270" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.285314" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.204772" elapsed="0.080580"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:23.285538" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:03:23.285430" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.285412" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.286040" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.286368" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.286439" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:23.204126" elapsed="0.082420"/>
</kw>
<msg time="2026-04-28T03:03:23.286637" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.286682" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.199857" elapsed="0.086862"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.287054" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.286793" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.286777" elapsed="0.000354"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:23.199722" elapsed="0.087431"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:23.199547" elapsed="0.087638"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:23.197195" elapsed="0.090059"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:23.192437" elapsed="0.094876"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.192024" elapsed="0.095334"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:23.186142" elapsed="0.101269"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:23.303551" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:23.304812" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1294'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovsconf_exit_br","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000030"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}],"termination-point":[{"tp-id":"vx1","ovsdb:options":[{"option":"remote_ip","value":"10.0.0.10"}],"ovsdb:name":"vx1","ovsdb:interface-type":"ovsdb:interface-type-vxlan"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:23.305070" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:23.295268" elapsed="0.009841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.312417" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:23.311620" elapsed="0.000826"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:23.308975" elapsed="0.003510"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.312651" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.312511" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.308930" elapsed="0.003797"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.313127" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
                        "ovsdb:bridge-name": "ovsconf_exit_br",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000030"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ],
                        "termination-point": [
                            {
                                "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
                                "ovsdb:name": "vx1",
                                "ovsdb:options": [
                                    {
                                        "option": "remote_ip",
                                        "value": "10.0.0.10"
                                    }
                                ],
                                "tp-id": "vx1"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:23.312860" elapsed="0.000335"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:23.313238" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:23.305668" elapsed="0.007695"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:23.305223" elapsed="0.008170"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.313556" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.313417" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.305195" elapsed="0.008433"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:23.313760" elapsed="0.000166"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:23.314289" elapsed="0.002335"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:03:23.314138" elapsed="0.002525"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:23.316885" elapsed="0.002539"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:03:23.316744" elapsed="0.002719"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:23.314002" elapsed="0.005491"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:03:23.294789" elapsed="0.024758"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:23.287573" elapsed="0.032027"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:23.184664" elapsed="0.135053"/>
</test>
<test id="s1-s2-t9" name="Modify the destination IP of Port" line="94">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:23.322899" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:23.322643" elapsed="0.000600"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.324266" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.324155" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.324135" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.328903" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.328798" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.328781" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.330023" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:23.329608" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.330500" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:23.330204" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:23.330570" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:23.330724" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:23.329215" elapsed="0.001534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.336020" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.335858" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.335840" elapsed="0.000270"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.337268" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.337161" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.337144" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:23.337768" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.337470" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.338183" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:23.337962" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.370203" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:23.338850" elapsed="0.031603"/>
</kw>
<msg time="2026-04-28T03:03:23.370682" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:23.370730" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.338360" elapsed="0.032408"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.443014" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o "d "i "f "y "[C "t "h "e "[C "d "e "s "t "i "n "a "t "i "o "n "[C "I "P "[C "o "f "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:23.371489" elapsed="0.071675"/>
</kw>
<msg time="2026-04-28T03:03:23.443329" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:23.443375" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.371036" elapsed="0.072375"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.443774" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.443517" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.443490" elapsed="0.000366"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.444326" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o "d "i "f "y "[C "t "h "e "[C "d "e "s "t "i "n "a "t "i "o "n "[C "I "P "[C "o "f "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:23.444009" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.444681" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.444476" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.444459" elapsed="0.000394"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:23.444890" elapsed="0.000064"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:23.446449" elapsed="0.000818"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.447541" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:23.448279" elapsed="0.000356"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:23.445777" elapsed="0.002960"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:23.445223" elapsed="0.003578"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:23.336838" elapsed="0.112063"/>
</kw>
<msg time="2026-04-28T03:03:23.449015" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.449060" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.336259" elapsed="0.112839"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:23.449283" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:23.449176" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.449158" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.449776" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.450146" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.450220" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:23.335493" elapsed="0.114835"/>
</kw>
<msg time="2026-04-28T03:03:23.450426" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.450470" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.331127" elapsed="0.119383"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.450830" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.450589" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.450571" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:23.330992" elapsed="0.119957"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:23.330802" elapsed="0.120185"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:23.328437" elapsed="0.122610"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:23.323825" elapsed="0.127282"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.323393" elapsed="0.127777"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:23.320625" elapsed="0.130604"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:23.459096" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:23.459316" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:23.458916" elapsed="0.000427"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:23.459742" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.19"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.459491" elapsed="0.000277"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:23.460160" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.19"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.459917" elapsed="0.000305"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.460736" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:23.460377" elapsed="0.000386"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.461270" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:23.460910" elapsed="0.000386"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:23.476675" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '378', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.19"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "vx1",
            "tp-id": "vx1"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:23.476749" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:23.476877" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:23.461441" elapsed="0.015474"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:23.477270" elapsed="0.005547"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>10.0.0.19</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_exit_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:03:23.458430" elapsed="0.024556"/>
</kw>
<doc>This will modify the dst ip of existing port</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:23.320083" elapsed="0.163171"/>
</test>
<test id="s1-s2-t10" name="Get Operational Topology with modified Port" line="98">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:23.489086" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:23.488812" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.490316" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.490205" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.490186" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.494878" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.494770" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.494752" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.495962" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:23.495566" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.496448" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:23.496154" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:23.496516" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:23.496669" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:23.495193" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.501807" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.501680" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.501662" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.503025" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:23.502891" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.502874" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:23.503534" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.503239" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.503977" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:23.503746" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.539682" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:23.504620" elapsed="0.035170"/>
</kw>
<msg time="2026-04-28T03:03:23.539998" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:23.540045" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.504154" elapsed="0.035928"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:23.600303" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "m "o "d "i "f "i "e "d "[C "P "o "[78Cr "[A[78Ct
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:23.540580" elapsed="0.059838"/>
</kw>
<msg time="2026-04-28T03:03:23.600577" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:23.600623" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.540247" elapsed="0.060412"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.600968" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.600737" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.600717" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.601482" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "m "o "d "i "f "i "e "d "[C "P "o "[78Cr "[A[78Ct
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:23.601184" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.601832" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.601627" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.601609" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:23.601959" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:23.603354" elapsed="0.000761"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:23.604381" elapsed="0.000447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:23.605102" elapsed="0.000354"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:23.602724" elapsed="0.002832"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:23.602213" elapsed="0.003405"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:23.502589" elapsed="0.103128"/>
</kw>
<msg time="2026-04-28T03:03:23.605810" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.605852" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.502034" elapsed="0.103855"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:23.606110" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:23.606000" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.605975" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.606587" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.606918" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:23.607041" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:23.501341" elapsed="0.105840"/>
</kw>
<msg time="2026-04-28T03:03:23.607273" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:23.607315" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.497069" elapsed="0.110284"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.607678" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.607436" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.607417" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:23.496922" elapsed="0.110854"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:23.496748" elapsed="0.111057"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:23.494408" elapsed="0.113452"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:23.489898" elapsed="0.118016"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:23.489486" elapsed="0.118490"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:23.485374" elapsed="0.122654"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.608519" level="INFO">@{list} = [ ovsconf_exit_br | vx1 | 10.0.0.19 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>10.0.0.19</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:23.608172" elapsed="0.000373"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:23.625328" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:23.625555" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:23.625664" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:23.616332" elapsed="0.009357"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.635570" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:23.633666" elapsed="0.001970"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:23.629346" elapsed="0.006380"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.636076" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.635784" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.629306" elapsed="0.006880"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.636572" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:23.636321" elapsed="0.000337"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:23.636700" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:23.626086" elapsed="0.010738"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:23.625766" elapsed="0.011089"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:23.637038" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:23.636879" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:23.625748" elapsed="0.011364"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:23.637243" elapsed="0.000166"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:23.640233" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:23.637726" elapsed="0.002640">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:23.637586" elapsed="0.002872">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:23.637462" elapsed="0.003091">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:23.615886" elapsed="0.024784">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:25.665863" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:25.666240" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:25.666411" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:25.656262" elapsed="0.010186"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:25.673956" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:25.672826" elapsed="0.001174"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:25.670214" elapsed="0.003843"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:25.674338" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:25.674134" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:25.670189" elapsed="0.004258"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:25.675015" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:25.674642" elapsed="0.000563"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:25.675270" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:25.667076" elapsed="0.008380"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:25.666578" elapsed="0.008920"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:25.675727" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:25.675533" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:25.666546" elapsed="0.009282"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:25.676032" elapsed="0.000240"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:25.680546" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:25.676742" elapsed="0.003933">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:25.676533" elapsed="0.004265">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:25.676353" elapsed="0.004648">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:25.655697" elapsed="0.025473">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:27.705534" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:27.705777" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:27.705987" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:27.696013" elapsed="0.010004"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:27.713795" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:27.712595" elapsed="0.001245"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:27.709880" elapsed="0.004020"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:27.714152" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:27.713963" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:27.709852" elapsed="0.004380"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:27.714633" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:27.714365" elapsed="0.000357"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:27.714769" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:27.706637" elapsed="0.008271"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:27.706141" elapsed="0.008828"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:27.715137" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:27.714997" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:27.706104" elapsed="0.009160"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:27.715406" elapsed="0.000174"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:27.718465" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:27.715960" elapsed="0.002598">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:27.715780" elapsed="0.002866">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:27.715642" elapsed="0.003128">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:27.695450" elapsed="0.023442">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:29.744684" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:29.744925" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:29.745151" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:29.731804" elapsed="0.013394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:29.757963" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:29.757060" elapsed="0.000934"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:29.752677" elapsed="0.005360"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:29.758209" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:29.758065" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:29.752634" elapsed="0.005652"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:29.758676" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:29.758419" elapsed="0.000344"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:29.758809" elapsed="0.000039"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:29.746291" elapsed="0.012674"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:29.745427" elapsed="0.013571"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:29.759161" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:29.759022" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:29.745374" elapsed="0.013902"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:29.759412" elapsed="0.000173"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:29.762441" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:29.759957" elapsed="0.002579">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:29.759780" elapsed="0.002844">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:29.759645" elapsed="0.003083">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:29.731066" elapsed="0.031786">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:31.786494" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:31.787049" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:31.787515" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:31.775333" elapsed="0.012248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.798109" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:31.797235" elapsed="0.000906"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:31.794088" elapsed="0.004101"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.798367" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:31.798217" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.794047" elapsed="0.004398"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.798844" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:31.798579" elapsed="0.000354"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:31.798997" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:31.788657" elapsed="0.010485"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:31.787797" elapsed="0.011393"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.799388" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:31.799242" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.787747" elapsed="0.011776"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:31.799660" elapsed="0.000181"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.804838" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:31.800240" elapsed="0.004726">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:31.800065" elapsed="0.004997">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:31.799905" elapsed="0.005282">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:31.774562" elapsed="0.030758">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<msg time="2026-04-28T03:03:31.805436" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:03:23.608703" elapsed="8.196875">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.807046" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:31.806526" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:31.807371" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.807158" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.807135" elapsed="0.000313"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:03:31.807649" elapsed="0.000231"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.808751" level="FAIL">'5221' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:31.808412" elapsed="0.000399">'5221' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:03:31.808901" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:03:31.808057" elapsed="0.000868"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.809442" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:31.809102" elapsed="0.000365"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.809906" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:31.809617" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.810388" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:31.810094" elapsed="0.000319"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.810925" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:03:31.810555" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.811443" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:31.811203" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.812148" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5221'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:03:31.811785" elapsed="0.000410"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:31.811555" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.811535" elapsed="0.000719"/>
</if>
<arg>5221</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:31.806129" elapsed="0.006173"/>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5221</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:03:23.484001" elapsed="8.328352">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</test>
<test id="s1-s2-t11" name="Create Port and attach to a Bridge" line="110">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:31.816047" elapsed="0.000265"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:31.815759" elapsed="0.000618"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.817440" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.817305" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.817282" elapsed="0.000230"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.824164" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.823973" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.823923" elapsed="0.000361"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.826013" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:31.825343" elapsed="0.000709"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.826544" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:31.826229" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:31.826632" elapsed="0.000047"/>
</return>
<msg time="2026-04-28T03:03:31.826816" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:31.824668" elapsed="0.002174"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.832339" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.832221" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.832200" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.833779" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.833663" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.833641" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:31.834357" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:31.834024" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:31.834776" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:31.834539" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:31.868528" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:31.835437" elapsed="0.033413"/>
</kw>
<msg time="2026-04-28T03:03:31.869304" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:31.869412" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.834983" elapsed="0.034514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:31.924929" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:31.870584" elapsed="0.054579"/>
</kw>
<msg time="2026-04-28T03:03:31.925378" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:31.925426" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.869922" elapsed="0.055543"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.925898" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:31.925583" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.925550" elapsed="0.000471"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.926542" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:31.926162" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.926902" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:31.926692" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.926674" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:31.927039" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:31.928591" elapsed="0.000788"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:31.929655" elapsed="0.000506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:31.930420" elapsed="0.000605"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:31.927958" elapsed="0.003204"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:31.927370" elapsed="0.003866"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:31.833261" elapsed="0.098079"/>
</kw>
<msg time="2026-04-28T03:03:31.931437" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:31.931480" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.832556" elapsed="0.098962"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:31.931706" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:03:31.931595" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.931577" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.932215" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.932616" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.932689" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:31.831849" elapsed="0.100948"/>
</kw>
<msg time="2026-04-28T03:03:31.932890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:31.932948" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.827284" elapsed="0.105703"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:31.933305" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:31.933061" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.933045" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:31.827125" elapsed="0.106279"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:31.826908" elapsed="0.106529"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:31.823358" elapsed="0.110136"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:31.816993" elapsed="0.116559"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.816526" elapsed="0.117073"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:31.813480" elapsed="0.120172"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:31.941645" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:31.941860" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:31.941472" elapsed="0.000415"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:31.942319" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.121...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:31.942069" elapsed="0.000277"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:31.942729" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.121...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:31.942497" elapsed="0.000258"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.943385" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:31.942909" elapsed="0.000503"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.943908" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:31.943561" elapsed="0.000388"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:31.959495" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '379', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.121"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "vx2",
            "tp-id": "vx2"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:31.959614" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:31.959813" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:31.944100" elapsed="0.015769"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:31.960263" elapsed="0.005321"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT2}</arg>
<arg>10.0.0.121</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_exit_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:03:31.940949" elapsed="0.024898"/>
</kw>
<doc>This request will creates port/interface and attach it to the specific bridge</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:31.812829" elapsed="0.153328"/>
</test>
<test id="s1-s2-t12" name="Get Operational Topology with Port" line="114">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:31.971204" elapsed="0.000218"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:31.970913" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.972520" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.972393" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.972369" elapsed="0.000225"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.977382" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.977271" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.977253" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.978447" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:31.978057" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:31.978925" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:31.978626" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:31.979016" elapsed="0.000036"/>
</return>
<msg time="2026-04-28T03:03:31.979213" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:31.977671" elapsed="0.001567"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.984326" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.984218" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.984200" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:31.985548" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:31.985441" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:31.985424" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:31.986094" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:31.985748" elapsed="0.000374"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:31.986495" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:31.986274" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:32.021638" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:31.987012" elapsed="0.034807"/>
</kw>
<msg time="2026-04-28T03:03:32.022054" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:32.022104" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.986670" elapsed="0.035471"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:32.087284" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:32.022740" elapsed="0.064733"/>
</kw>
<msg time="2026-04-28T03:03:32.087674" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:32.087721" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:32.022350" elapsed="0.065409"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.088190" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:32.087867" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:32.087839" elapsed="0.000517"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:32.088838" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:32.088492" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.089212" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:32.089003" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:32.088984" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:32.089336" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:32.090830" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:32.091910" elapsed="0.000490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:32.092657" elapsed="0.000605"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:32.090203" elapsed="0.003168"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:32.089634" elapsed="0.003804"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:31.985137" elapsed="0.108404"/>
</kw>
<msg time="2026-04-28T03:03:32.093637" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:32.093683" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.984533" elapsed="0.109190"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:32.093913" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-28T03:03:32.093802" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:32.093784" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.094416" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.094758" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:32.094832" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:31.983870" elapsed="0.111086"/>
</kw>
<msg time="2026-04-28T03:03:32.095088" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:32.095137" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.979609" elapsed="0.115569"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.095503" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:32.095257" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:32.095240" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:31.979476" elapsed="0.116129"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:31.979298" elapsed="0.116340"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:31.976894" elapsed="0.118800"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:31.972084" elapsed="0.123669"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:31.971622" elapsed="0.124180"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:31.968736" elapsed="0.127124"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:32.096444" level="INFO">@{list} = [ ovsconf_exit_br | vx2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:32.096030" elapsed="0.000442"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:32.113644" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:32.113877" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:32.114024" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:32.104363" elapsed="0.009688"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:32.119441" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:32.118661" elapsed="0.000810"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:32.116780" elapsed="0.002733"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.119683" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:32.119539" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:32.116762" elapsed="0.003000"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:32.120166" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:32.119896" elapsed="0.000388"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:32.120329" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:32.114460" elapsed="0.005996"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:32.114133" elapsed="0.006355"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:32.120652" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:32.120512" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:32.114113" elapsed="0.006612"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:32.120856" elapsed="0.000185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:32.123989" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:32.121378" elapsed="0.002705">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:32.121232" elapsed="0.002940">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:32.121100" elapsed="0.003175">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:32.103903" elapsed="0.020489">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:34.145126" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:34.145354" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:34.145535" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:34.137501" elapsed="0.008063"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:34.151395" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:34.150273" elapsed="0.001164"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:34.148341" elapsed="0.003153"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:34.151732" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:34.151532" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:34.148320" elapsed="0.003522"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:34.152422" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:34.152055" elapsed="0.000490"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:34.152610" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:34.146043" elapsed="0.006757"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:34.145666" elapsed="0.007179"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:34.153096" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:34.152878" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:34.145641" elapsed="0.007629"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:34.153464" elapsed="0.000241"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:34.158285" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:34.154528" elapsed="0.003899">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:34.154000" elapsed="0.004555">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:34.153789" elapsed="0.004939">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:34.136748" elapsed="0.022156">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:36.181434" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:36.181739" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:36.181999" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:36.172412" elapsed="0.009626"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:36.189852" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:36.188861" elapsed="0.001020"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:36.186211" elapsed="0.003712"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:36.190111" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:36.189967" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:36.186185" elapsed="0.004003"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:36.190581" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:36.190321" elapsed="0.000345"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:36.190713" elapsed="0.000035"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:36.182664" elapsed="0.008182"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:36.182177" elapsed="0.008701"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:36.191056" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:36.190902" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:36.182143" elapsed="0.009018"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:36.191297" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:36.194242" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:36.191812" elapsed="0.002523">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:36.191657" elapsed="0.002773">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:36.191525" elapsed="0.003016">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:36.171805" elapsed="0.022867">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:38.216855" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:38.217122" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:38.217330" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:38.208118" elapsed="0.009242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:38.224700" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:38.223480" elapsed="0.001264"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:38.220308" elapsed="0.004496"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:38.225091" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:38.224843" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:38.220289" elapsed="0.004970"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:38.225905" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:38.225511" elapsed="0.000546"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:38.226127" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:38.217882" elapsed="0.008439"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:38.217471" elapsed="0.008896"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:38.226601" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:38.226402" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:38.217445" elapsed="0.009316"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:38.226982" elapsed="0.000248"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:38.231606" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:38.227743" elapsed="0.004007">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:38.227507" elapsed="0.004370">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:38.227314" elapsed="0.004733">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:38.207533" elapsed="0.024949">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:40.255507" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:40.255743" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:40.255917" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:40.246988" elapsed="0.008973"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.261419" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:40.260588" elapsed="0.000861"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.258673" elapsed="0.002817"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.261666" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.261517" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.258655" elapsed="0.003090"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.262156" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.261879" elapsed="0.000365"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:40.262291" elapsed="0.000039"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:40.256415" elapsed="0.006014"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.256063" elapsed="0.006398"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.262624" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.262485" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.256038" elapsed="0.006685"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:40.262861" elapsed="0.000186"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.265805" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:40.263409" elapsed="0.002488">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:03:40.263253" elapsed="0.002748">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:40.263107" elapsed="0.002999">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:40.246414" elapsed="0.019813">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<msg time="2026-04-28T03:03:40.266343" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:03:32.096668" elapsed="8.169825">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.267778" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:40.267351" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:40.268044" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.267881" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.267862" elapsed="0.000246"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:03:40.268265" elapsed="0.000217"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.269348" level="FAIL">'5221' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:40.269007" elapsed="0.000401">'5221' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:03:40.269500" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:03:40.268638" elapsed="0.000886"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.270042" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.269690" elapsed="0.000379"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.270511" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:40.270222" elapsed="0.000316"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.271200" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:40.270683" elapsed="0.000544"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.271742" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:03:40.271374" elapsed="0.000463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.272241" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.271999" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.272921" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5221'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:03:40.272582" elapsed="0.000404"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.272352" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.272334" elapsed="0.000711"/>
</if>
<arg>5221</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:40.266973" elapsed="0.006118"/>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5221</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:03:31.966762" elapsed="8.306375">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</test>
<test id="s1-s2-t13" name="Delete the Port1" line="126">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:40.277128" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:40.276850" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.278349" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.278239" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.278221" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.282974" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.282853" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.282836" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.284101" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.283680" elapsed="0.000450"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.284584" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.284283" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:40.284656" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:03:40.284812" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:40.283290" elapsed="0.001548"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.290039" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.289915" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.289897" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.291325" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.291212" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.291194" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:40.291866" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.291536" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.292278" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:40.292058" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.322519" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:40.292777" elapsed="0.029847"/>
</kw>
<msg time="2026-04-28T03:03:40.322788" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:40.322834" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.292453" elapsed="0.030417"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.357064" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:40.323695" elapsed="0.033477"/>
</kw>
<msg time="2026-04-28T03:03:40.357331" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:40.357376" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.323057" elapsed="0.034355"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.357702" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.357489" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.357470" elapsed="0.000311"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.358228" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.357912" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.358567" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.358365" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.358347" elapsed="0.000295"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:40.358674" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:40.360134" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.361180" elapsed="0.000454"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:40.361885" elapsed="0.000418"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:40.359487" elapsed="0.002918"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:40.358950" elapsed="0.003519"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:40.290830" elapsed="0.071744"/>
</kw>
<msg time="2026-04-28T03:03:40.362667" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.362711" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.290248" elapsed="0.072500"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:40.362931" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-28T03:03:40.362825" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.362806" elapsed="0.000239"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.363479" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.363868" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.363955" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:40.289576" elapsed="0.074490"/>
</kw>
<msg time="2026-04-28T03:03:40.364158" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.364200" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.285210" elapsed="0.079026"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.364552" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.364310" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.364293" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:40.285077" elapsed="0.079581"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:40.284891" elapsed="0.079797"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:40.282497" elapsed="0.082244"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:40.277954" elapsed="0.086842"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.277530" elapsed="0.087309"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:40.274271" elapsed="0.090620"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:40.374952" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:40.375001" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT1}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:40.365052" elapsed="0.010021"/>
</kw>
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:40.273710" elapsed="0.101553"/>
</test>
<test id="s1-s2-t14" name="Get Operational Topology after deletion of Port1" line="133">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:40.382327" elapsed="0.000469"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:40.381723" elapsed="0.001193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.385146" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.384869" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.384829" elapsed="0.000469"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.391061" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.390949" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.390918" elapsed="0.000230"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.392165" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.391763" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.392639" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.392341" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:40.392707" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:40.392858" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:40.391365" elapsed="0.001517"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.397917" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.397807" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.397789" elapsed="0.000250"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.399209" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.399068" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.399051" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:40.399704" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.399411" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.400104" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:40.399876" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.429339" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:40.400603" elapsed="0.028836"/>
</kw>
<msg time="2026-04-28T03:03:40.429598" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:40.429662" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.400278" elapsed="0.029421"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.490088" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "d "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:40.430216" elapsed="0.060011"/>
</kw>
<msg time="2026-04-28T03:03:40.490407" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:40.490453" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.429859" elapsed="0.060630"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.490808" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.490574" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.490554" elapsed="0.000333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.491355" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "d "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.491039" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.491712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.491502" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.491484" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:40.491821" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:40.493303" elapsed="0.000781"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.494354" elapsed="0.000453"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:40.495092" elapsed="0.000357"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:40.492675" elapsed="0.002875"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:40.492139" elapsed="0.003473"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:40.398740" elapsed="0.096970"/>
</kw>
<msg time="2026-04-28T03:03:40.495801" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.495844" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.398181" elapsed="0.097700"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:40.496089" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:03:40.495982" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.495963" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.496593" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.496922" elapsed="0.000040"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.497011" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:40.397464" elapsed="0.099654"/>
</kw>
<msg time="2026-04-28T03:03:40.497208" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.497251" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.393251" elapsed="0.104035"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.497600" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.497359" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.497343" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:40.393119" elapsed="0.104579"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:40.392947" elapsed="0.104781"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:40.390576" elapsed="0.107205"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:40.384241" elapsed="0.113594"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.383287" elapsed="0.114592"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:40.376682" elapsed="0.121248"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.498400" level="INFO">@{list} = [ vx1 ]</msg>
<var>@{list}</var>
<arg>${PORT1}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.498093" elapsed="0.000332"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:40.518379" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:40.518667" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:40.518786" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:40.509897" elapsed="0.008915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.532687" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:40.531716" elapsed="0.001049"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.524051" elapsed="0.008758"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.533030" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.532836" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.524009" elapsed="0.009111"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.533521" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.533253" elapsed="0.000355"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:40.533651" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:40.519247" elapsed="0.014532"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.518888" elapsed="0.014920"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.533984" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.533831" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.518870" elapsed="0.015188"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:40.534275" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.534241" elapsed="0.000071"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:40.534227" elapsed="0.000105"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:40.534112" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.534097" elapsed="0.000301"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:40.534533" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:40.535062" elapsed="0.002460"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:03:40.534883" elapsed="0.002683"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:40.534756" elapsed="0.002841"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:40.509446" elapsed="0.028204"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:40.498592" elapsed="0.039109"/>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:40.375476" elapsed="0.162339"/>
</test>
<test id="s1-s2-t15" name="Delete the Port2" line="144">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:40.540785" elapsed="0.000232"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:40.540535" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.542028" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.541901" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.541883" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.546706" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.546587" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.546566" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.547894" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.547512" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.548388" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.548092" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:40.548472" elapsed="0.000048"/>
</return>
<msg time="2026-04-28T03:03:40.548692" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:40.547058" elapsed="0.001666"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.554170" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.554061" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.554043" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.555427" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.555318" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.555300" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:40.555925" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.555626" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.556339" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:40.556122" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.588078" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:40.556842" elapsed="0.031344"/>
</kw>
<msg time="2026-04-28T03:03:40.588349" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:40.588395" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.556517" elapsed="0.031914"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.626009" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:40.588925" elapsed="0.037196"/>
</kw>
<msg time="2026-04-28T03:03:40.626327" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:40.626372" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.588595" elapsed="0.037814"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.626703" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.626487" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.626468" elapsed="0.000313"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.627259" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.626910" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.627599" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.627396" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.627379" elapsed="0.000296"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:40.627707" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:40.629112" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.630158" elapsed="0.000458"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:40.630870" elapsed="0.000406"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:40.628488" elapsed="0.002887"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:40.627974" elapsed="0.003464"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:40.554965" elapsed="0.076571"/>
</kw>
<msg time="2026-04-28T03:03:40.631627" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.631669" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.554377" elapsed="0.077329"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:40.631983" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-28T03:03:40.631782" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.631765" elapsed="0.000307"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.632458" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.632778" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.632848" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:40.553706" elapsed="0.079285"/>
</kw>
<msg time="2026-04-28T03:03:40.633086" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.633128" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.549156" elapsed="0.084008"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.633477" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.633237" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.633221" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:40.549016" elapsed="0.084559"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:40.548788" elapsed="0.084817"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:40.546168" elapsed="0.087491"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:40.541620" elapsed="0.092092"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.541211" elapsed="0.092582"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:40.538534" elapsed="0.095313"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:40.645409" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:40.645517" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT2}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:40.634027" elapsed="0.011634"/>
</kw>
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:40.538034" elapsed="0.107882"/>
</test>
<test id="s1-s2-t16" name="Get Operational Topology after Deletion of Port2" line="151">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:40.653390" elapsed="0.000469"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:40.652787" elapsed="0.001227"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.655896" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.655784" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.655765" elapsed="0.000216"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.660520" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.660414" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.660396" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.661556" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.661180" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.662042" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.661733" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:40.662112" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:40.662262" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:40.660799" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.667409" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.667303" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.667286" elapsed="0.000189"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.668582" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.668477" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.668460" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:40.669105" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.668782" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.669492" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:40.669281" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.704486" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:40.670008" elapsed="0.034587"/>
</kw>
<msg time="2026-04-28T03:03:40.704758" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:40.704805" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.669668" elapsed="0.035172"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.764994" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:40.705382" elapsed="0.059885"/>
</kw>
<msg time="2026-04-28T03:03:40.765503" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:40.765568" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.705044" elapsed="0.060575"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.766078" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.765735" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.765705" elapsed="0.000488"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.766811" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.766378" elapsed="0.000619"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.767397" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.767104" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.767078" elapsed="0.000427"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:40.767550" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:40.769590" elapsed="0.001119"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.771150" elapsed="0.000634"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:40.772173" elapsed="0.000509"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:40.768677" elapsed="0.004145"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:40.767917" elapsed="0.004993"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:40.668179" elapsed="0.104891"/>
</kw>
<msg time="2026-04-28T03:03:40.773197" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.773258" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.667615" elapsed="0.105696"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:40.773566" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:03:40.773418" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.773393" elapsed="0.000290"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.774244" elapsed="0.000035"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.774702" elapsed="0.000034"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.774801" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:40.666920" elapsed="0.108462"/>
</kw>
<msg time="2026-04-28T03:03:40.775736" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.775846" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.662638" elapsed="0.113519"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.777148" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.776404" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.776342" elapsed="0.001001"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:40.662507" elapsed="0.114890"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:40.662338" elapsed="0.115135"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:40.660053" elapsed="0.117564"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:40.655415" elapsed="0.122576"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.654333" elapsed="0.123815"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:40.647783" elapsed="0.130497"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.779613" level="INFO">@{list} = [ vx2 ]</msg>
<var>@{list}</var>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.778645" elapsed="0.001028"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:40.802777" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:40.803052" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:40.803189" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:40.795889" elapsed="0.007327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.809060" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:40.807972" elapsed="0.001130"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.805924" elapsed="0.003234"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.809396" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.809195" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.805905" elapsed="0.003597"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.810069" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.809692" elapsed="0.000563"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:40.810323" elapsed="0.000054"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:40.803636" elapsed="0.006883"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:40.803300" elapsed="0.007262"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.810791" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.810597" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.803280" elapsed="0.007629"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:40.811240" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.811192" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:40.811172" elapsed="0.000151"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:40.811008" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.810986" elapsed="0.000396"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:40.811569" elapsed="0.000238"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:40.812321" elapsed="0.003758"/>
</kw>
<var name="${i}">vx2</var>
<status status="PASS" start="2026-04-28T03:03:40.812099" elapsed="0.004038"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:40.811887" elapsed="0.004293"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:40.795295" elapsed="0.020961"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:40.780237" elapsed="0.036093"/>
</kw>
<doc>This request will fetch the operational topology after the Port is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:40.646373" elapsed="0.170125"/>
</test>
<test id="s1-s2-t17" name="Delete the Bridge" line="162">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:40.820532" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:40.820275" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.821780" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.821668" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.821648" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.826414" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.826306" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.826288" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.827492" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.827110" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.827979" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.827669" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:40.828050" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:40.828204" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:40.826705" elapsed="0.001523"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.833323" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.833214" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.833196" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.834544" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.834436" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.834418" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:40.835105" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.834747" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.835509" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:40.835283" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.871863" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:40.836176" elapsed="0.035871"/>
</kw>
<msg time="2026-04-28T03:03:40.872215" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:40.872262" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.835686" elapsed="0.036613"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.905966" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:40.872806" elapsed="0.033288"/>
</kw>
<msg time="2026-04-28T03:03:40.906256" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:40.906301" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.872465" elapsed="0.033872"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.906635" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.906416" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.906397" elapsed="0.000317"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.907200" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:40.906863" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.907553" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.907339" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.907322" elapsed="0.000308"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:40.907662" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:40.909264" elapsed="0.000908"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.910473" elapsed="0.000554"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:40.911292" elapsed="0.000371"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:40.908548" elapsed="0.003216"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:40.907926" elapsed="0.003904"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:40.834134" elapsed="0.077816"/>
</kw>
<msg time="2026-04-28T03:03:40.912049" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.912093" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.833531" elapsed="0.078601"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:40.912320" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:40.912210" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.912192" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.912798" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.913144" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.913218" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:40.832846" elapsed="0.080490"/>
</kw>
<msg time="2026-04-28T03:03:40.913431" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:40.913483" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.828572" elapsed="0.084952"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:40.913885" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:40.913601" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.913583" elapsed="0.000400"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:40.828441" elapsed="0.085566"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:40.828277" elapsed="0.085760"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:40.825945" elapsed="0.088147"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:40.821378" elapsed="0.092768"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.820957" elapsed="0.093234"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:40.817582" elapsed="0.096661"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:40.927395" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:40.927444" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:40.914394" elapsed="0.013108"/>
</kw>
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:40.816811" elapsed="0.110807"/>
</test>
<test id="s1-s2-t18" name="Get Operational Topology after Deletion of Bridge" line="169">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:40.930715" elapsed="0.000251"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:40.930459" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.931991" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.931863" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.931844" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.936844" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.936737" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.936719" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.937910" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:40.937528" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:40.938404" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:40.938106" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:40.938474" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:40.938627" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:40.937146" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.943951" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.943828" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.943810" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:40.945157" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:40.945049" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:40.945031" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:40.945658" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:40.945359" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.946078" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:40.945837" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:40.978716" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:40.946586" elapsed="0.032490"/>
</kw>
<msg time="2026-04-28T03:03:40.979405" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:40.979478" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.946258" elapsed="0.033277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.036866" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:40.980524" elapsed="0.056726"/>
</kw>
<msg time="2026-04-28T03:03:41.037574" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:41.037643" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.979875" elapsed="0.057977"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.038499" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.038056" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.038005" elapsed="0.000619"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.039462" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.038876" elapsed="0.000714"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.039998" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.039681" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.039657" elapsed="0.000453"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:41.040162" elapsed="0.000059"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.042311" elapsed="0.001143"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.043829" elapsed="0.000653"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.044841" elapsed="0.000868"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:41.041395" elapsed="0.004462"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:41.040603" elapsed="0.005367"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:40.944723" elapsed="0.101385"/>
</kw>
<msg time="2026-04-28T03:03:41.046245" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.046304" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.944165" elapsed="0.102191"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:41.046634" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.046477" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.046447" elapsed="0.000316"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.047410" elapsed="0.000039"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.047885" elapsed="0.000036"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.048158" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:40.943484" elapsed="0.104825"/>
</kw>
<msg time="2026-04-28T03:03:41.048436" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.048498" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.939041" elapsed="0.109613"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.049146" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.048772" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.048747" elapsed="0.000504"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:40.938891" elapsed="0.110395"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:40.938704" elapsed="0.110631"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:40.936372" elapsed="0.113043"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:40.931577" elapsed="0.117917"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:40.931165" elapsed="0.118399"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:40.928406" elapsed="0.121238"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.050446" level="INFO">@{list} = [ ovsconf_exit_br | vx1 | vx2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:41.049864" elapsed="0.000617"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:41.075770" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:41.076213" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:41.076460" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:41.067331" elapsed="0.009171"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.084754" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:41.083519" elapsed="0.001277"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:41.080789" elapsed="0.004066"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.085112" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.084894" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.080764" elapsed="0.004448"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.085748" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.085402" elapsed="0.000588"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:41.086056" elapsed="0.000054"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:41.077281" elapsed="0.008965"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:41.076685" elapsed="0.009602"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.086516" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.086321" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.076639" elapsed="0.009976"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:41.087003" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.086930" elapsed="0.000127"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:41.086909" elapsed="0.000179"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:41.086695" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.086673" elapsed="0.000476"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:41.087345" elapsed="0.000245"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.088131" elapsed="0.003948"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:03:41.087868" elapsed="0.004269"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.092469" elapsed="0.003320"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:03:41.092257" elapsed="0.003586"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.096175" elapsed="0.003418"/>
</kw>
<var name="${i}">vx2</var>
<status status="PASS" start="2026-04-28T03:03:41.095971" elapsed="0.003686"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:41.087673" elapsed="0.012029"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:41.066386" elapsed="0.033411"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:41.050706" elapsed="0.049169"/>
</kw>
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:40.927817" elapsed="0.172257"/>
</test>
<test id="s1-s2-t19" name="Delete the OVSDB Node" line="180">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:41.104754" elapsed="0.000345"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:41.104390" elapsed="0.000786"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.106416" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.106271" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.106244" elapsed="0.000250"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.111580" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.111415" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.111388" elapsed="0.000295"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.113204" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:41.112583" elapsed="0.000663"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.113918" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:41.113473" elapsed="0.000507"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:41.114045" elapsed="0.000045"/>
</return>
<msg time="2026-04-28T03:03:41.114249" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:41.112054" elapsed="0.002225"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.121917" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.121682" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.121641" elapsed="0.000432"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.124121" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.123899" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.123874" elapsed="0.000350"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:41.124908" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.124430" elapsed="0.000536"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.125643" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:41.125319" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.155863" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:41.126854" elapsed="0.029363"/>
</kw>
<msg time="2026-04-28T03:03:41.156565" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:41.156642" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.125921" elapsed="0.030784"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.197976" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:41.157824" elapsed="0.040388"/>
</kw>
<msg time="2026-04-28T03:03:41.198505" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:41.198563" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.157129" elapsed="0.041476"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.199150" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.198765" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.198704" elapsed="0.000541"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.199806" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.199387" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.200180" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.199968" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.199948" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:41.200295" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.201883" elapsed="0.000801"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.203000" elapsed="0.000489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.203745" elapsed="0.000390"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:41.201229" elapsed="0.003009"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:41.200628" elapsed="0.003675"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:41.123439" elapsed="0.080965"/>
</kw>
<msg time="2026-04-28T03:03:41.204501" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.204544" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.122367" elapsed="0.082219"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:41.204771" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.204664" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.204646" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.205287" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.205623" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.205696" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:41.120980" elapsed="0.084826"/>
</kw>
<msg time="2026-04-28T03:03:41.205986" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.206032" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.114779" elapsed="0.091290"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.206394" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.206149" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.206131" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:41.114581" elapsed="0.091913"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:41.114353" elapsed="0.092180"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:41.110873" elapsed="0.095725"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:41.105929" elapsed="0.100736"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.105387" elapsed="0.101360"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:41.101358" elapsed="0.105452"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:41.216150" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:41.216199" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:41.206992" elapsed="0.009268"/>
</kw>
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:41.100395" elapsed="0.115990"/>
</test>
<test id="s1-s2-t20" name="Get Operational Topology after Deletion of OVSDB Node" line="187">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:41.223623" elapsed="0.000500"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:41.223027" elapsed="0.001218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.226447" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.226194" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.226152" elapsed="0.000448"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.231880" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.231773" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.231756" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.232927" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:41.232550" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.233424" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:41.233128" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:41.233494" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:41.233645" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:41.232182" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.238930" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.238816" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.238798" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.240178" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.240067" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.240049" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:41.240720" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.240378" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.241128" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:41.240896" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.275570" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:41.241629" elapsed="0.034043"/>
</kw>
<msg time="2026-04-28T03:03:41.275848" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:41.275894" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.241305" elapsed="0.034625"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.342887" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:41.276452" elapsed="0.066570"/>
</kw>
<msg time="2026-04-28T03:03:41.343183" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:41.343227" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.276120" elapsed="0.067143"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.343558" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.343341" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.343322" elapsed="0.000318"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.344091" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.343770" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.344443" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.344239" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.344221" elapsed="0.000298"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:41.344550" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.345962" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.347035" elapsed="0.000461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.347904" elapsed="0.000520"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:41.345348" elapsed="0.003177"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:41.344804" elapsed="0.003799"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:41.239737" elapsed="0.108965"/>
</kw>
<msg time="2026-04-28T03:03:41.348792" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.348835" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.239152" elapsed="0.109719"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:41.349072" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.348964" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.348929" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.349580" elapsed="0.000033"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.349922" elapsed="0.000272"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.350289" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:41.238443" elapsed="0.111959"/>
</kw>
<msg time="2026-04-28T03:03:41.350493" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.350535" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.234172" elapsed="0.116405"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.350918" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.350673" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.350655" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:41.233899" elapsed="0.117135"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:41.233725" elapsed="0.117340"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:41.231414" elapsed="0.119705"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:41.225499" elapsed="0.125674"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.224560" elapsed="0.126658"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:41.218309" elapsed="0.132960"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.351848" level="INFO">@{list} = [ ovsdb://10.30.170.161:6634 | ovsconf_exit_br | vx1 | vx2 ]</msg>
<var>@{list}</var>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:41.351414" elapsed="0.000460"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:41.371644" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:41.371870" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:41.372014" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:41.363378" elapsed="0.008663"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.378076" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:41.377005" elapsed="0.001111"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:41.374710" elapsed="0.003501"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.378450" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.378250" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.374692" elapsed="0.003866"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.379132" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.378764" elapsed="0.000487"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:41.379309" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:41.372421" elapsed="0.007059"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:41.372119" elapsed="0.007403"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.379750" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.379556" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.372101" elapsed="0.007746"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:41.380169" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.380123" elapsed="0.000098"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:41.380102" elapsed="0.000148"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:03:41.379922" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.379901" elapsed="0.000406"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:41.380491" elapsed="0.000233"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.381198" elapsed="0.006098"/>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="PASS" start="2026-04-28T03:03:41.380993" elapsed="0.006403"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.387677" elapsed="0.002332"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:03:41.387515" elapsed="0.002534"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.390269" elapsed="0.002565"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:03:41.390127" elapsed="0.002748"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:41.393130" elapsed="0.002400"/>
</kw>
<var name="${i}">vx2</var>
<status status="PASS" start="2026-04-28T03:03:41.392972" elapsed="0.002598"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:03:41.380797" elapsed="0.014802"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:03:41.362912" elapsed="0.032740"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:41.352050" elapsed="0.043653"/>
</kw>
<doc>This request will fetch the operational topology after the OVSDB node is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:41.216674" elapsed="0.179143"/>
</test>
<test id="s1-s2-t21" name="Check For Bug 4756" line="202">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:41.398985" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:41.398715" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.400264" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.400153" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.400133" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.404783" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.404679" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.404662" elapsed="0.000186"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.405810" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:41.405436" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.406291" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:41.406000" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:41.406360" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:41.406512" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:41.405076" elapsed="0.001460"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.411861" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.411753" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.411735" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.413077" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.412968" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.412929" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:41.413577" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.413277" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.413982" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:41.413752" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.448141" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:41.414485" elapsed="0.033759"/>
</kw>
<msg time="2026-04-28T03:03:41.448421" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:41.448467" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.414160" elapsed="0.034343"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.506670" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:41.449070" elapsed="0.057786"/>
</kw>
<msg time="2026-04-28T03:03:41.507076" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:41.507121" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.448715" elapsed="0.058444"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.507550" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.507263" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.507234" elapsed="0.000407"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.508161" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.507780" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.508507" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.508301" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.508284" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:41.508618" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.510145" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.511237" elapsed="0.000473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.511989" elapsed="0.000362"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:41.509484" elapsed="0.002969"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:41.508911" elapsed="0.003604"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:41.412648" elapsed="0.099968"/>
</kw>
<msg time="2026-04-28T03:03:41.512711" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.512755" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.412088" elapsed="0.100703"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:41.512994" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.512869" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.512851" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.513482" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.513819" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.513890" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:41.411409" elapsed="0.102608"/>
</kw>
<msg time="2026-04-28T03:03:41.514114" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.514158" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.406955" elapsed="0.107241"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.514513" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.514271" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.514255" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:41.406802" elapsed="0.107829"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:41.406590" elapsed="0.108077"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:41.404326" elapsed="0.110462"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:41.399797" elapsed="0.115053"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.399387" elapsed="0.115510"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:41.396608" elapsed="0.118358"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.524425" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.524165" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.524145" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.524787" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:41.524889" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.524644" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.525449" level="INFO">Attempting to execute command "grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.525074" elapsed="0.000422"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.526021" level="INFO">${conn_id} = 92</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.525641" elapsed="0.000406"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.526924" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:41.527016" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:41.526643" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.527184" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.528324" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:41.857477" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:45 UTC 2026

  System load:  0.81               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:11 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:41.528007" elapsed="0.329603"/>
</kw>
<msg time="2026-04-28T03:03:41.857691" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.527650" elapsed="0.330124"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:41.526251" elapsed="0.331633"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.858378" level="INFO">Executing command 'grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:03:41.871171" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:03:41.871290" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:03:41.871333" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:41.858128" elapsed="0.013227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.871513" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.872995" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.872346" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.873546" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.873267" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.873216" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:41.874209" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.873963" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.873898" elapsed="0.000520"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.874496" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.880751" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.881896" elapsed="0.000412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.882701" elapsed="0.000264"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:41.875612" elapsed="0.007480"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:41.523548" elapsed="0.359766"/>
</kw>
<msg time="2026-04-28T03:03:41.883445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.523000" elapsed="0.360563"/>
</kw>
<msg time="2026-04-28T03:03:41.883685" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:03:41.522353" elapsed="0.361356"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:03:41.883903" elapsed="0.000319"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>SimpleShardDataTreeCohort.*Unexpected failure in validation phase</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:03:41.521775" elapsed="0.362508"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.885491" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:41.885068" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:03:41.885741" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.885596" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.885576" elapsed="0.000249"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.885997" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.886163" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.886333" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.886512" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.886673" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.886824" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.886991" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.887222" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.887072" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:41.887056" elapsed="0.000239"/>
</if>
<arg>4756</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:41.884711" elapsed="0.002632"/>
</kw>
<doc>bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:41.396040" elapsed="0.491347"/>
</test>
<test id="s1-s2-t22" name="Check For Bug 4794" line="210">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:41.890812" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:41.890561" elapsed="0.000588"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.892134" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.892024" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.892006" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.896820" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.896713" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.896696" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.897903" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:41.897487" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.898428" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:41.898112" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:41.898498" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:41.898649" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:41.897119" elapsed="0.001558"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.904130" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.904022" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.904004" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.905357" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:41.905252" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.905235" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:41.905861" level="INFO">${karaf_connection_index} = 61</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.905558" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.906273" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:41.906054" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.940629" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:41.906787" elapsed="0.034008"/>
</kw>
<msg time="2026-04-28T03:03:41.941012" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:41.941061" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.906466" elapsed="0.034631"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.979115" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:41.941673" elapsed="0.037562"/>
</kw>
<msg time="2026-04-28T03:03:41.979401" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:41.979448" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.941293" elapsed="0.038192"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.979822" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.979580" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.979553" elapsed="0.000352"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.980375" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.980068" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.980720" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.980515" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.980497" elapsed="0.000356"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:41.980892" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.982388" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.983433" elapsed="0.000458"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.984158" elapsed="0.000352"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:41.981741" elapsed="0.002868"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:41.981198" elapsed="0.003475"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:41.904929" elapsed="0.079844"/>
</kw>
<msg time="2026-04-28T03:03:41.984868" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.984911" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.904340" elapsed="0.080630"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:41.985156" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:41.985049" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.985031" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.985644" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.985993" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:41.986065" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:41.903664" elapsed="0.082511"/>
</kw>
<msg time="2026-04-28T03:03:41.986271" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:41.986314" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.899080" elapsed="0.087285"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.986686" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.986442" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.986426" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:41.898922" elapsed="0.087862"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:41.898736" elapsed="0.088084"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:41.896350" elapsed="0.090528"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:41.891715" elapsed="0.095235"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:41.891296" elapsed="0.095703"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:41.888447" elapsed="0.098606"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:41.996439" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:41.996183" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:41.996164" elapsed="0.000355"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.996800" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:41.996901" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:41.996657" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.997464" level="INFO">Attempting to execute command "grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:41.997085" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:41.998098" level="INFO">${conn_id} = 95</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:41.997708" elapsed="0.000416"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:41.999030" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:41.999107" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:41.998725" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.999277" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:42.000422" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:42.342039" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:45 UTC 2026

  System load:  0.81               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:41 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:42.000106" elapsed="0.342053"/>
</kw>
<msg time="2026-04-28T03:03:42.342249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.999747" elapsed="0.342578"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:41.998344" elapsed="0.344091"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:42.342881" level="INFO">Executing command 'grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:03:42.355861" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:03:42.356051" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:03:42.356114" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:42.342646" elapsed="0.013500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:42.356365" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:42.357750" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:42.357143" elapsed="0.000701"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:42.358383" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:42.358048" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:42.357995" elapsed="0.000548"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:42.358892" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-28T03:03:42.358658" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:42.358626" elapsed="0.000483"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:42.359182" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:42.365387" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:42.366548" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:42.366917" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:42.360301" elapsed="0.006785"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:41.995643" elapsed="0.371532"/>
</kw>
<msg time="2026-04-28T03:03:42.367227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:41.995101" elapsed="0.372174"/>
</kw>
<msg time="2026-04-28T03:03:42.367460" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:03:41.994467" elapsed="0.373018"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:03:42.367816" elapsed="0.000342"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>Shard.*shard-topology-operational An exception occurred while preCommitting transaction</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:03:41.993853" elapsed="0.374366"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:42.369399" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:42.368979" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:03:42.369643" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:42.369498" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:42.369481" elapsed="0.000241"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.369875" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.370060" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.370254" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.370421" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.370578" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.370730" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.370882" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.371129" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:42.370979" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:03:42.370962" elapsed="0.000240"/>
</if>
<arg>4794</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:03:42.368620" elapsed="0.002630"/>
</kw>
<doc>bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:41.887778" elapsed="0.483516"/>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:42.372501" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 ]</msg>
<var>@{uris}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:42.372183" elapsed="0.000345"/>
</kw>
<kw name="Suite Teardown" owner="OVSDB">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:42.375481" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:42.375224" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:42.375206" elapsed="0.000355"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:42.375835" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:42.375951" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:42.375698" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:42.376506" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:42.376128" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:42.377256" level="INFO">${conn_id} = 97</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:42.376700" elapsed="0.000582"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:42.378124" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:42.378287" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:42.377826" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:42.378463" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:42.379710" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:42.703610" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:13 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:42.379307" elapsed="0.324403"/>
</kw>
<msg time="2026-04-28T03:03:42.703775" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:42.378956" elapsed="0.324898"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:42.377491" elapsed="0.326473"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:42.704363" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:03:43.942523" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:43.943131" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:43.943250" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:42.704156" elapsed="1.239161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:43.944044" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:43.946281" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsconf_exit_br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:43.945507" elapsed="0.000856"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:43.946785" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:43.946520" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:43.946469" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:43.947169" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-28T03:03:43.947009" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:43.946985" elapsed="0.000332"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:43.947369" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:43.951420" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:43.952158" elapsed="0.000258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:43.952630" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:43.947904" elapsed="0.004944"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:42.374734" elapsed="1.578273"/>
</kw>
<msg time="2026-04-28T03:03:43.953095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:42.374192" elapsed="1.579006"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:42.373732" elapsed="1.579752"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:43.956424" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:43.956034" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:43.956008" elapsed="0.000532"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:43.956986" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:43.957143" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:43.956748" elapsed="0.000432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:43.958316" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:43.957435" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:43.958975" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:43.958530" elapsed="0.000474"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:43.959965" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:43.960049" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:43.959592" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:43.960229" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:43.961638" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:44.290222" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:42 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:43.961130" elapsed="0.329295"/>
</kw>
<msg time="2026-04-28T03:03:44.290524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:43.960753" elapsed="0.329890"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:43.959224" elapsed="0.331559"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.291439" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:03:44.324879" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:03:44.325316" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:44.325418" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:44.291109" elapsed="0.034371"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:44.326077" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:44.328214" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:44.327302" elapsed="0.001014"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:44.328838" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:44.328516" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:44.328454" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:44.329438" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-28T03:03:44.329168" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:44.329133" elapsed="0.000503"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:44.329713" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.334597" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:44.335209" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:44.335537" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:44.330475" elapsed="0.005218"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:43.955292" elapsed="0.380499"/>
</kw>
<msg time="2026-04-28T03:03:44.335851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:43.954414" elapsed="0.381509"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:43.953743" elapsed="0.382295"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:03:42.373444" elapsed="1.962671"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:44.338215" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:44.337946" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:44.337914" elapsed="0.000383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.338844" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:44.338970" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:44.338440" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:44.339530" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:44.339144" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.340123" level="INFO">${conn_id} = 101</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:44.339730" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:44.341005" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:44.341083" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:44.340695" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.341284" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.342454" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:44.673984" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:44 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:44.342134" elapsed="0.332013"/>
</kw>
<msg time="2026-04-28T03:03:44.674232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.341771" elapsed="0.332560"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:44.340358" elapsed="0.334085"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.674925" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:03:44.717653" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:44.718004" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:44.718116" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:44.674675" elapsed="0.043497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:44.718737" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:44.720437" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:44.719728" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:44.721107" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:44.720727" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:44.720673" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:44.721670" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:03:44.721409" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:44.721372" elapsed="0.000524"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:44.722014" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.726930" elapsed="0.000362"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:44.727452" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:44.727767" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:44.722781" elapsed="0.005144"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:44.337439" elapsed="0.390601"/>
</kw>
<msg time="2026-04-28T03:03:44.728101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.336779" elapsed="0.391392"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:44.336311" elapsed="0.391941"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:44.730714" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:44.730371" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:44.730346" elapsed="0.000455"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.731116" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:44.731224" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:44.730968" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:44.731790" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:44.731398" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.732383" level="INFO">${conn_id} = 103</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:44.732006" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:44.733354" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:44.733435" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:44.732994" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.733611" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:44.734798" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:45.070020" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:44 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:44.734482" elapsed="0.335841"/>
</kw>
<msg time="2026-04-28T03:03:45.070411" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.734128" elapsed="0.336393"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:44.732623" elapsed="0.338019"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.071179" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:03:45.235840" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:45.236330" level="INFO">${stdout} =  * Exiting ovs-vswitchd (2569)
 * Exiting ovsdb-server (2552)</msg>
<msg time="2026-04-28T03:03:45.236431" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:45.070885" elapsed="0.165598"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:45.237009" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:45.239125" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:45.238449" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:45.239677" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:45.239391" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:45.239343" elapsed="0.000492"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:45.240225" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:03:45.239984" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:45.239920" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:45.240489" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.246173" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:45.246790" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:45.247125" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:45.241206" elapsed="0.006073"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:44.729753" elapsed="0.517617"/>
</kw>
<msg time="2026-04-28T03:03:45.247426" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:44.729006" elapsed="0.518485"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:44.728454" elapsed="0.519115"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:45.249826" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:45.249529" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:45.249510" elapsed="0.000398"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.250250" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:45.250359" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:45.250087" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:45.250961" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:45.250530" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.251572" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:45.251160" elapsed="0.000456"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:45.252526" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:45.252623" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:45.252231" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.252968" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.254233" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:45.625481" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:44 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:45.253886" elapsed="0.371841"/>
</kw>
<msg time="2026-04-28T03:03:45.625893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.253464" elapsed="0.372600"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:45.251871" elapsed="0.374359"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.627114" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:03:45.649799" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:45.650079" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:45.650147" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:45.626644" elapsed="0.023537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:45.650477" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:45.651671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:45.651203" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:45.652124" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:45.651879" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:45.651840" elapsed="0.000393"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:45.652477" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:03:45.652311" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:45.652289" elapsed="0.000359"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:45.652700" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.656721" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:45.657695" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:45.658079" elapsed="0.000114"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:45.653196" elapsed="0.005062"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:45.248979" elapsed="0.409385"/>
</kw>
<msg time="2026-04-28T03:03:45.658429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.248363" elapsed="0.410148"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:45.247822" elapsed="0.410771"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:45.660761" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:45.660441" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:45.660415" elapsed="0.000431"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.661157" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:45.661264" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:45.661009" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:45.661979" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:45.661570" elapsed="0.000458"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.662551" level="INFO">${conn_id} = 107</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:45.662177" elapsed="0.000400"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:45.663436" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:45.663512" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:45.663146" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.663684" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:45.664859" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:46.034618" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:45 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:45.664526" elapsed="0.370208"/>
</kw>
<msg time="2026-04-28T03:03:46.034808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.664178" elapsed="0.370717"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:45.662787" elapsed="0.372231"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:46.035453" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:03:46.190048" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:46.190314" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:03:46.190421" level="INFO">${stderr} = 2026-04-28T03:03:46Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:46Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:46Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:46.035220" elapsed="0.155256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:46.190847" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.192422" level="INFO">2026-04-28T03:03:46Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:46Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:03:46Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:46.191759" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:46.193023" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:46.192699" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.192648" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:46.193541" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:03:46.193302" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.193267" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:46.193805" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:46.199655" elapsed="0.000798"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.200779" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:46.201094" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:46.194509" elapsed="0.006735"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:45.659921" elapsed="0.541416"/>
</kw>
<msg time="2026-04-28T03:03:46.201477" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:45.659321" elapsed="0.542223"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:45.658817" elapsed="0.542809"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:03:42.373128" elapsed="3.828556"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:46.212827" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:46.213528" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '311'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:46.202029" elapsed="0.011637"/>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</var>
<status status="PASS" start="2026-04-28T03:03:46.201885" elapsed="0.011871"/>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="PASS" start="2026-04-28T03:03:46.201740" elapsed="0.012086"/>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:46.226336" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:46.226599" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:46.226803" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:46.214784" elapsed="0.012055"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.234818" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:46.233984" elapsed="0.000874"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:46.230280" elapsed="0.004633"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:46.235173" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:46.234971" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.230255" elapsed="0.005023"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.235811" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:46.235462" elapsed="0.000423"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:46.235965" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:46.227244" elapsed="0.008896"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:46.245385" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0sifm7k20fks9ll6e8u3z1bvz1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:46.245619" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:46.245754" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:46.236371" elapsed="0.009445"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.257184" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:46.256022" elapsed="0.001190"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:46.251777" elapsed="0.005476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:46.257418" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:46.257278" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.251733" elapsed="0.005762"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.257870" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:46.257626" elapsed="0.000372"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:46.258042" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:46.246437" elapsed="0.011729"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:03:46.214321" elapsed="0.043893"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:46.258421" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-28T03:03:46.258348" elapsed="0.000175"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:03:42.372770" elapsed="3.885807"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:03:42.371973" elapsed="3.886655"/>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-28T03:03:10.919778" elapsed="35.338882"/>
</suite>
<suite id="s1-s3" name="Vxlan Extension Test" source="/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot">
<kw name="Suite Setup" owner="OVSDB" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.352564" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:46.348638" elapsed="0.003974"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-28T03:03:46.348420" elapsed="0.004254"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.357230" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:03:46.353717" elapsed="0.003541"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-28T03:03:46.357441" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:46.357336" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.357316" elapsed="0.000189"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.358020" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:46.357649" elapsed="0.000416"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.358530" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:03:46.358221" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-28T03:03:46.359064" elapsed="0.000281"/>
</kw>
<msg time="2026-04-28T03:03:46.359440" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:46.359486" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:46.358712" elapsed="0.000797"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.360060" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:46.359676" elapsed="0.000410"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.361100" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:46.360822" elapsed="0.000303"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.361517" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:46.361266" elapsed="0.000276"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.361996" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.361691" elapsed="0.000332"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.364951" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.365634" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:46.365313" elapsed="0.000347"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.365804" elapsed="0.000244"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.366811" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:46.366520" elapsed="0.000316"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-28T03:03:46.366880" elapsed="0.000032"/>
</return>
<msg time="2026-04-28T03:03:46.367047" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-28T03:03:46.366237" elapsed="0.000835"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:46.367794" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.159:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63e63ec50&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:03:46.367220" elapsed="0.000705"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.368142" elapsed="0.000211"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-28T03:03:46.364389" elapsed="0.004023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:46.364177" elapsed="0.004279"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-28T03:03:46.362076" elapsed="0.006410"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.369059" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:46.368641" elapsed="0.000462"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.369659" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.159'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:46.369261" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.370264" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:03:46.369863" elapsed="0.000443"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-28T03:03:46.360381" elapsed="0.009982"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-28T03:03:46.353387" elapsed="0.017030"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:46.370594" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:46.370483" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.370465" elapsed="0.000195"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.373717" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:46.373220" elapsed="0.000524"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.374220" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:46.373897" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:46.374289" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:46.374441" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:46.372889" elapsed="0.001576"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:46.375431" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.375170" elapsed="0.000286"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:46.376180" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:46.376307" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:46.376022" elapsed="0.000312"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:46.379669" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:46.379108" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:46.379089" elapsed="0.000708"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:46.380456" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:46.380687" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:46.380001" elapsed="0.000736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.381662" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:46.381009" elapsed="0.000757"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:46.383007" level="INFO">${conn_id} = 109</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:46.382090" elapsed="0.000969"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:46.384900" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:46.385094" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:46.384407" elapsed="0.000731"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:46.385471" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:46.387113" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:47.046975" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:46 UTC 2026

  System load:  0.62               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:42 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:46.386713" elapsed="0.660455"/>
</kw>
<msg time="2026-04-28T03:03:47.047265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:46.386279" elapsed="0.661196"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:46.383493" elapsed="0.664165"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.048747" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-28T03:03:47.062330" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-28T03:03:47.062731" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:47.063040" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:47.048159" elapsed="0.015005"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.063900" elapsed="0.001357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.068163" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.066649" elapsed="0.001783"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.069316" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.068822" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.068778" elapsed="0.000792"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:47.070056" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-28T03:03:47.069691" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.069667" elapsed="0.000663"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.070418" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.075196" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.076351" elapsed="0.000449"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.077248" elapsed="0.000364"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.071176" elapsed="0.006559"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:46.378088" elapsed="0.700054"/>
</kw>
<msg time="2026-04-28T03:03:47.078222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:46.377450" elapsed="0.700850"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:03:46.376981" elapsed="0.701435"/>
</kw>
<msg time="2026-04-28T03:03:47.078558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:46.376482" elapsed="0.702147"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.081872" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.082370" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.082662" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.079060" elapsed="0.003787"/>
</kw>
<msg time="2026-04-28T03:03:47.082960" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-28T03:03:46.375664" elapsed="0.707323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.083453" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.083199" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:03:47.083548" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-28T03:03:46.374806" elapsed="0.708870"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:46.374639" elapsed="0.709075"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:46.374516" elapsed="0.709251"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-28T03:03:46.370869" elapsed="0.712964"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:03:47.084038" elapsed="0.000229"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.097486" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.097370" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.097351" elapsed="0.000204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.097858" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:47.097980" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.097717" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.098465" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.098178" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.098909" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.098658" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:47.099712" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:03:47.099479" elapsed="0.000352">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-28T03:03:47.099976" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:03:47.100024" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.099122" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.100343" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.100124" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.100106" elapsed="0.000335"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:47.101201" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.100910" elapsed="0.000317"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:03:47.101274" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:03:47.101451" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.100633" elapsed="0.000843"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.101637" elapsed="0.000426"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.102383" level="INFO">index=112
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:47.102483" level="INFO">${karaf_connection_object} = index=112
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.102265" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.102652" elapsed="0.002134"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.105241" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:03:47.250968" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.104961" elapsed="0.146283"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.258243" elapsed="0.000376"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.258783" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.259195" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.253707" elapsed="0.005650"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:47.252125" elapsed="0.007278"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.097083" elapsed="0.162371"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:03:47.085063" elapsed="0.174439"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.084617" elapsed="0.174939"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:47.084482" elapsed="0.175119"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-28T03:03:47.084325" elapsed="0.175326"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-28T03:03:46.352956" elapsed="0.906800"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.262623" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.262491" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.262463" elapsed="0.000236"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.267611" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.267500" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.267482" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.268761" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:47.268357" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.269317" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:47.269008" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:47.269413" elapsed="0.000054"/>
</return>
<msg time="2026-04-28T03:03:47.269626" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:47.268023" elapsed="0.001629"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.275279" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.275135" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.275109" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.276716" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.276575" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.276556" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:47.277269" level="INFO">${karaf_connection_index} = 112</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.276920" elapsed="0.000376"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.277691" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:47.277449" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.312866" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "v "s "[78Cd "[A[78Cb</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:47.278387" elapsed="0.034742"/>
</kw>
<msg time="2026-04-28T03:03:47.313274" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:47.313320" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.277871" elapsed="0.035486"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.390416" level="INFO">"- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "4 "0 "_ "_ "V "x "l "a "n "_ "E "x "t "e "n "s "i "o "n "_ "T "e "s "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:47.314091" elapsed="0.076523"/>
</kw>
<msg time="2026-04-28T03:03:47.390771" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:47.390816" level="INFO">${message_wait} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.313544" elapsed="0.077313"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.391424" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.391111" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.391077" elapsed="0.000529"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.392220" level="INFO"> "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "4 "0 "_ "_ "V "x "l "a "n "_ "E "x "t "e "n "s "i "o "n "_ "T "e "s "t ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.391745" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.392612" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.392380" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.392362" elapsed="0.000422"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:47.392823" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.395384" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.396226" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.396857" elapsed="0.000265"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.394370" elapsed="0.002845"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:47.393166" elapsed="0.004182"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:47.276228" elapsed="0.121223"/>
</kw>
<msg time="2026-04-28T03:03:47.397543" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:47.397586" level="INFO">${message} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.275497" elapsed="0.122125"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:47.397876" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:47.397760" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.397741" elapsed="0.000257"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.398407" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.398747" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.398818" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:47.274721" elapsed="0.124203"/>
</kw>
<msg time="2026-04-28T03:03:47.399115" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:47.399160" level="INFO">${output} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.270052" elapsed="0.129144"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.399515" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.399271" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.399254" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:47.269896" elapsed="0.129717"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:47.269709" elapsed="0.129938"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:47.267200" elapsed="0.132504"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-28T03:03:47.260538" elapsed="0.139234"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.259990" elapsed="0.139828"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-28T03:03:46.348100" elapsed="1.051773"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.413120" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.413009" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.412991" elapsed="0.000204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.413499" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:47.413605" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.413351" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.414057" level="INFO">{1: 112}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.413775" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.414510" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.414264" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.415079" elapsed="0.000194"/>
</kw>
<msg time="2026-04-28T03:03:47.415372" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:47.415416" level="INFO">${old_connection_index} = 112</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.414708" elapsed="0.000730"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:47.416301" elapsed="0.000144"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.426730" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:47.416924" elapsed="0.009865"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.416604" elapsed="0.010234"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.427337" elapsed="0.000375"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.427020" elapsed="0.000828"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:03:47.415728" elapsed="0.012168"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:47.415512" elapsed="0.012504"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.415495" elapsed="0.012549"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:47.428801" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.428527" elapsed="0.000300"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:03:47.428874" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:03:47.429040" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.428252" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.429214" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.429925" level="INFO">index=115
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:47.430050" level="INFO">${karaf_connection_object} = index=115
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.429808" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.430221" elapsed="0.003792"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.434443" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:03:47.578309" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.434176" elapsed="0.144309"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.582107" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.582585" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.582914" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.579770" elapsed="0.003331"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:47.578964" elapsed="0.004185"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.411381" elapsed="0.171822"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:47.583729" level="INFO">Creating Session using : alias=session, url=http://10.30.170.159:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63ef0c290&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:03:47.583352" elapsed="0.000614"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:47.594349" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:47.594519" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Mon, 27-Apr-2026 03:03:47 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:47.594712" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:47.584408" elapsed="0.010332"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.606282" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:47.605508" elapsed="0.000808"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:47.601550" elapsed="0.004813"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.606567" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.606394" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.601492" elapsed="0.005176"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.607102" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.606820" elapsed="0.000338"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:47.607207" elapsed="0.000045"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:47.595496" elapsed="0.011862"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:47.615574" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:47.615888" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:47.616101" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:47.607525" elapsed="0.008614"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.623594" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:47.622519" elapsed="0.001116"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:47.619870" elapsed="0.003864"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.624015" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.623783" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.619841" elapsed="0.004357"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.624751" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.624394" elapsed="0.000495"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:47.624972" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:47.616556" elapsed="0.008602"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:03:47.584194" elapsed="0.041036"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:46.347804" elapsed="1.277496"/>
</kw>
<test id="s1-s3-t1" name="Make the OVS instance to listen for connection" line="32">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:47.629415" elapsed="0.000299"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:47.629051" elapsed="0.000741"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.631249" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.631092" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.631065" elapsed="0.000278"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.637866" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.637752" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.637733" elapsed="0.000214"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.638967" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:47.638565" elapsed="0.000465"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.639497" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:47.639198" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:47.639566" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:03:47.639743" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:47.638191" elapsed="0.001578"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.645059" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.644920" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.644902" elapsed="0.000225"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.646334" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:47.646224" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.646206" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:47.646843" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.646541" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.647275" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:47.647040" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.679139" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:47.647835" elapsed="0.031543"/>
</kw>
<msg time="2026-04-28T03:03:47.679667" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:47.679719" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.647454" elapsed="0.032302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.728085" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "M "a "k "e "[C "t "h "e "[C "O "V "S "[C "i "n "s "t "a "n "c "e "[C "t "o "[C "l "i "s "t "e "n "[C "f "o "r "[C "c "o "n "n "e "c "t "i "o "n "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:47.680550" elapsed="0.047855"/>
</kw>
<msg time="2026-04-28T03:03:47.728714" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:47.728782" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "M "a "k "e "[C "t "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.680054" elapsed="0.048787"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.729513" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.729045" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.728992" elapsed="0.000654"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.730478" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "M "a "k "e "[C "t "h "e "[C "O "V "S "[C "i "n "s "t "a "n "c "e "[C "t "o "[C "l "i "s "t "e "n "[C "f "o "r "[C "c "o "n "n "e "c "t "i "o "n "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.729863" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.731042" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.730709" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.730682" elapsed="0.000473"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:47.731200" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.733315" elapsed="0.000944"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.734651" elapsed="0.000684"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.735754" elapsed="0.000877"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:47.732426" elapsed="0.004419"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:47.731529" elapsed="0.005440"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:47.645885" elapsed="0.091258"/>
</kw>
<msg time="2026-04-28T03:03:47.737296" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:47.737367" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "M "a "k "e "[C "t "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.645289" elapsed="0.092138"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:47.737714" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-28T03:03:47.737557" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.737527" elapsed="0.000338"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.738584" elapsed="0.000043"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.739226" elapsed="0.000033"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:47.739312" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:47.644576" elapsed="0.094880"/>
</kw>
<msg time="2026-04-28T03:03:47.739618" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:47.739691" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "M "a "k "e "[C "t "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.640187" elapsed="0.099560"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.740252" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.739860" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.739834" elapsed="0.000520"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:47.640034" elapsed="0.100347"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:47.639831" elapsed="0.100590"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:47.637381" elapsed="0.103102"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:47.630648" elapsed="0.109895"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:47.630041" elapsed="0.110552"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:47.626143" elapsed="0.114508"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:47.743776" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:47.743335" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:47.743307" elapsed="0.000578"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.744232" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:47.744340" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:47.744062" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.744920" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:47.744513" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.745525" level="INFO">${conn_id} = 118</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:47.745138" elapsed="0.000412"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:47.746607" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:47.746688" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:47.746299" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.746930" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:47.749881" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:48.091155" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:45 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:47.749040" elapsed="0.342299"/>
</kw>
<msg time="2026-04-28T03:03:48.091448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.747568" elapsed="0.343974"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:47.745843" elapsed="0.345826"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.092637" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:03:48.115544" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:48.115802" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:48.115901" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:48.091969" elapsed="0.024022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:48.116362" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:48.117898" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:48.117276" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:48.118490" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:48.118199" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:48.118148" elapsed="0.000503"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:48.119040" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:03:48.118767" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:48.118734" elapsed="0.000495"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:48.119303" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.124442" elapsed="0.000329"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:48.124930" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:48.125255" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:48.120036" elapsed="0.005366"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:47.742449" elapsed="0.383044"/>
</kw>
<msg time="2026-04-28T03:03:48.125545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:47.741590" elapsed="0.384002"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:47.740869" elapsed="0.384799"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:48.127805" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:48.127540" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:48.127519" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.128191" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:48.128293" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:48.128048" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:48.128913" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:48.128529" elapsed="0.000447"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.129504" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:48.129128" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:48.130419" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:48.130494" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:48.130139" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.130665" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.131845" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:48.459429" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:02:51 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:48 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:48.131528" elapsed="0.328119"/>
</kw>
<msg time="2026-04-28T03:03:48.459741" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.131162" elapsed="0.328670"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:48.129740" elapsed="0.330242"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.460509" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:03:48.544389" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:48.544791" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:48.544891" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:48.460239" elapsed="0.084745"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:48.545468" elapsed="0.000682"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:48.547280" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:48.546588" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:48.547967" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:48.547549" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:48.547500" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:48.548488" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:03:48.548248" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:48.548215" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:48.548753" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.554674" elapsed="0.000804"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:48.555812" elapsed="0.000355"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:48.556309" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:48.549460" elapsed="0.007003"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:48.126994" elapsed="0.429561"/>
</kw>
<msg time="2026-04-28T03:03:48.556615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.126416" elapsed="0.430332"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:${OVSDB_NODE_PORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:48.125875" elapsed="0.430962"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:48.558990" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:48.558691" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:48.558671" elapsed="0.000401"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.559387" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:48.559494" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:48.559230" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:48.560067" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:48.559664" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.560627" level="INFO">${conn_id} = 122</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:48.560261" elapsed="0.000391"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:48.561545" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:48.561621" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:48.561267" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.561794" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:48.562985" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:49.324140" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:48.562652" elapsed="0.761697"/>
</kw>
<msg time="2026-04-28T03:03:49.324451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.562297" elapsed="0.762235"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:48.560865" elapsed="0.763785"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.325172" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:03:49.347675" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:49.348083" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:49.348183" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:49.324897" elapsed="0.023338"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.348691" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.350371" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.349711" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.351409" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.350637" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.350588" elapsed="0.000991"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:49.351979" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-28T03:03:49.351697" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.351664" elapsed="0.000527"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.352266" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.357464" elapsed="0.000559"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.358391" elapsed="0.000262"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.358892" elapsed="0.000176"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:49.353007" elapsed="0.006140"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:48.558157" elapsed="0.801127"/>
</kw>
<msg time="2026-04-28T03:03:49.359369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:48.557562" elapsed="0.801889"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:48.557063" elapsed="0.802505"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.362777" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.362368" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.362336" elapsed="0.000580"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.363374" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:49.363525" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.363167" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.364374" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.363778" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.365226" level="INFO">${conn_id} = 124</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.364663" elapsed="0.000600"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.366562" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:49.366672" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:49.366162" elapsed="0.000544"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.366996" elapsed="0.000629"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.368555" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:49.727303" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:49 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:49.368231" elapsed="0.359266"/>
</kw>
<msg time="2026-04-28T03:03:49.727593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.367855" elapsed="0.359832"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:49.365570" elapsed="0.362234"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.728327" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:03:49.750533" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:03:49.750862" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:03:49.751044" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:49.728078" elapsed="0.023030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.751616" elapsed="0.000625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.753417" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.752707" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.754060" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.753719" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.753665" elapsed="0.000568"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:03:49.754616" elapsed="0.000105"/>
</return>
<status status="PASS" start="2026-04-28T03:03:49.754360" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.754324" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.755057" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.760047" elapsed="0.000329"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.760534" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.760838" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:49.755797" elapsed="0.005212"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:49.361547" elapsed="0.399553"/>
</kw>
<msg time="2026-04-28T03:03:49.761153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.360679" elapsed="0.400522"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:${OVSDB_NODE_PORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:49.359873" elapsed="0.401408"/>
</kw>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:47.625392" elapsed="2.136011"/>
</test>
<test id="s1-s3-t2" name="Connect controller to OVSDB Node1" line="38">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:49.764636" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:49.764378" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.765918" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.765802" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.765783" elapsed="0.000218"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.770733" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.770570" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.770553" elapsed="0.000247"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.771808" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:49.771416" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.772306" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:49.772005" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:49.772377" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:49.772530" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:49.771038" elapsed="0.001517"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.778207" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.778098" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.778079" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.779494" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.779386" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.779369" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:49.780039" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.779701" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.780486" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:49.780257" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.811407" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:49.781016" elapsed="0.030625"/>
</kw>
<msg time="2026-04-28T03:03:49.811877" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:49.811925" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.780666" elapsed="0.031327"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.858576" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "[C "c "o "n "t "r "o "l "l "e "r "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:49.812666" elapsed="0.046338"/>
</kw>
<msg time="2026-04-28T03:03:49.859428" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:49.859534" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.812238" elapsed="0.047380"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.860434" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.859825" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.859771" elapsed="0.000846"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.861680" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "[C "c "o "n "t "r "o "l "l "e "r "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.860920" elapsed="0.000928"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.862517" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.862032" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.861992" elapsed="0.000780"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:49.862862" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.864438" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.865494" elapsed="0.000480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.866233" elapsed="0.000373"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:49.863780" elapsed="0.002936"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:49.863204" elapsed="0.003574"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:49.779084" elapsed="0.087795"/>
</kw>
<msg time="2026-04-28T03:03:49.866991" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:49.867036" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.778417" elapsed="0.088657"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:49.867260" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:49.867151" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.867133" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.867753" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.868119" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.868192" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:49.777739" elapsed="0.090628"/>
</kw>
<msg time="2026-04-28T03:03:49.868464" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:49.868508" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.772951" elapsed="0.095594"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.868868" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.868621" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.868604" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:49.772797" elapsed="0.096188"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:49.772611" elapsed="0.096408"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:49.770208" elapsed="0.098879"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:49.765512" elapsed="0.103633"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.765084" elapsed="0.104107"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:49.762296" elapsed="0.106955"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:49.870081" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:49.870259" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:49.869875" elapsed="0.000411"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:49.870709" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.870438" elapsed="0.000298"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:49.871148" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.870891" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.871687" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:49.871329" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.872181" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.871862" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.872834" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.872374" elapsed="0.000509"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:49.884650" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:49.884704" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:49.884793" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:49.873052" elapsed="0.011766"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.894979" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.890829" elapsed="0.004253"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.897176" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:49.895251" elapsed="0.001953"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:49.895110" elapsed="0.002130"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.890788" elapsed="0.006474"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.897651" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.897404" elapsed="0.000289"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:49.897736" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:49.885659" elapsed="0.012203"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:49.898022" elapsed="0.002322"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:03:49.869499" elapsed="0.030909"/>
</kw>
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:49.761768" elapsed="0.138747"/>
</test>
<test id="s1-s3-t3" name="Connect controller to OVSDB Node2" line="42">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:49.903985" elapsed="0.000401"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:49.903686" elapsed="0.000757"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.905509" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.905374" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.905351" elapsed="0.000229"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.910326" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.910193" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.910176" elapsed="0.000234"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.911463" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:49.911070" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.911992" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:49.911668" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:49.912063" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:03:49.912221" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:49.910675" elapsed="0.001571"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.917734" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.917624" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.917600" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.919063" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:49.918927" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.918910" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:49.919566" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.919268" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.919983" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:49.919749" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.952102" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:49.920492" elapsed="0.031772"/>
</kw>
<msg time="2026-04-28T03:03:49.952482" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:49.952529" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.920160" elapsed="0.032405"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:49.990883" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "[C "c "o "n "t "r "o "l "l "e "r "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:49.953194" elapsed="0.037882"/>
</kw>
<msg time="2026-04-28T03:03:49.991380" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:49.991426" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.952769" elapsed="0.038696"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.991876" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.991578" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.991547" elapsed="0.000439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:49.992483" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "[C "c "o "n "t "r "o "l "l "e "r "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:49.992124" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.992832" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.992626" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.992608" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:49.992963" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:49.994513" elapsed="0.000911"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:49.995699" elapsed="0.000485"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:49.996438" elapsed="0.000351"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:49.993840" elapsed="0.003048"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:49.993271" elapsed="0.003704"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:49.918624" elapsed="0.078450"/>
</kw>
<msg time="2026-04-28T03:03:49.997167" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:49.997210" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.917961" elapsed="0.079286"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:49.997436" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:49.997323" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.997305" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.997925" elapsed="0.000041"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.998277" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:49.998348" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:49.917250" elapsed="0.081211"/>
</kw>
<msg time="2026-04-28T03:03:49.998592" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:49.998637" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "o "n "n "e "c "t "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.912619" elapsed="0.086054"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:49.999193" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:49.998747" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:49.998730" elapsed="0.000645"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:49.912479" elapsed="0.086949"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:49.912302" elapsed="0.087200"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:49.909787" elapsed="0.089840"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:49.905056" elapsed="0.094699"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:49.904590" elapsed="0.095378"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:49.901248" elapsed="0.098856"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:03:50.002000" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:03:50.002345" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:03:50.001612" elapsed="0.000795"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:50.003419" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.171.239:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:50.002801" elapsed="0.000681"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:03:50.004541" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.171.239:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:03:50.003853" elapsed="0.000749"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.006103" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:50.005237" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.006989" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:50.006504" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.007423" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.171.239:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.171.239"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:50.007183" elapsed="0.000285"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:50.023219" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.171.239:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.171.239"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:03:50.023292" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:50.023418" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:50.007612" elapsed="0.015840"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.029654" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:50.027045" elapsed="0.002697"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.032718" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:03:50.029990" elapsed="0.002765"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:50.029779" elapsed="0.003026"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.027017" elapsed="0.005818"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.033398" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:50.033052" elapsed="0.000408"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:50.033522" elapsed="0.000044"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:50.023845" elapsed="0.009854"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:03:50.033898" elapsed="0.003240"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:03:50.000680" elapsed="0.036544"/>
</kw>
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:49.900724" elapsed="0.136648"/>
</test>
<test id="s1-s3-t4" name="Get Operational Topology from OVSDB Node1 and OVSDB Node2" line="46">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:50.040911" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:50.040653" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:50.042250" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:50.042134" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.042115" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:50.046903" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:50.046792" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.046775" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.047982" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:50.047582" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.048452" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:50.048161" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:50.048520" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:03:50.048672" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:50.047201" elapsed="0.001494"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:50.056137" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:50.056021" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.056001" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:50.057412" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:50.057307" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.057289" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:50.057917" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:50.057616" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:50.058334" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:50.058113" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:50.090678" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:50.058861" elapsed="0.031957"/>
</kw>
<msg time="2026-04-28T03:03:50.091090" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:50.091149" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:50.058526" elapsed="0.032674"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:50.185214" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "f "r "o "m "[C "O "V "S "D "B "[C "N "o "d "e "1 "[C "a "n "d "[C "[78CO "[A[78CV
 "S "D "B "[C "N "o "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:50.091883" elapsed="0.093610"/>
</kw>
<msg time="2026-04-28T03:03:50.185738" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:50.185784" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:50.091426" elapsed="0.094395"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.186322" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:50.185979" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.185910" elapsed="0.000499"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.187052" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "f "r "o "m "[C "O "V "S "D "B "[C "N "o "d "e "1 "[C "a "n "d "[C "[78CO "[A[78CV
 "S "D "B "[C "N "o "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:50.186623" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.187419" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:50.187208" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.187190" elapsed="0.000382"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:50.187609" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:50.189179" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:50.190245" elapsed="0.000573"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:50.191105" elapsed="0.000363"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:50.188521" elapsed="0.003048"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:50.187924" elapsed="0.003709"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:50.057004" elapsed="0.134728"/>
</kw>
<msg time="2026-04-28T03:03:50.191826" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:50.191870" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:50.056358" elapsed="0.135548"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:50.192115" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:03:50.192005" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.191986" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.192604" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.192956" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:50.193029" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:50.055644" elapsed="0.137494"/>
</kw>
<msg time="2026-04-28T03:03:50.193234" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:50.193278" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:50.049073" elapsed="0.144242"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.193633" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:50.193389" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.193372" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:50.048924" elapsed="0.144808"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:50.048751" elapsed="0.145016"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:50.046422" elapsed="0.147401"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:50.041819" elapsed="0.152061"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:50.041392" elapsed="0.152533"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:50.038549" elapsed="0.155447"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:50.214924" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:50.215334" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:50.215682" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:50.202301" elapsed="0.013423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.223835" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:50.222972" elapsed="0.000892"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:50.220096" elapsed="0.003816"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.224113" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:50.223964" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.220070" elapsed="0.004119"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.224578" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:50.224325" elapsed="0.000339"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:50.224711" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:50.216457" elapsed="0.008396"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:50.215877" elapsed="0.009011"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:50.225075" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:50.224914" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:50.215841" elapsed="0.009343"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:50.225326" elapsed="0.000172"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:50.228457" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:50.225876" elapsed="0.002684">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<var name="${i}">6634</var>
<status status="FAIL" start="2026-04-28T03:03:50.225706" elapsed="0.002947">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:50.225563" elapsed="0.003196">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:50.201715" elapsed="0.027173">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:52.256541" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:52.256871" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:52.257171" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:52.241501" elapsed="0.015736"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:52.266163" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:52.264982" elapsed="0.001223"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:52.262119" elapsed="0.004149"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:52.266512" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:52.266306" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:52.262091" elapsed="0.004531"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:52.267199" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:52.266812" elapsed="0.000508"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:52.267385" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:52.258174" elapsed="0.009400"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:52.257499" elapsed="0.010120"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:52.267849" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:52.267653" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:52.257415" elapsed="0.010655"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:52.268268" elapsed="0.000240"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:52.272437" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:52.269017" elapsed="0.003548">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<var name="${i}">6634</var>
<status status="FAIL" start="2026-04-28T03:03:52.268772" elapsed="0.003916">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:52.268586" elapsed="0.004244">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:52.240908" elapsed="0.032111">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:54.296367" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:54.296681" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:54.296917" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:54.287517" elapsed="0.009459"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:54.304674" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:54.303434" elapsed="0.001284"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:54.300790" elapsed="0.003986"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:54.305045" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:54.304813" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:54.300765" elapsed="0.004390"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:54.305750" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:54.305342" elapsed="0.000528"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:54.305951" elapsed="0.000053"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:54.297592" elapsed="0.008554"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:54.297109" elapsed="0.009081"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:54.306418" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:54.306223" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:54.297077" elapsed="0.009485"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:54.306752" elapsed="0.000255"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:54.311185" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:54.307496" elapsed="0.003817">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<var name="${i}">6634</var>
<status status="FAIL" start="2026-04-28T03:03:54.307276" elapsed="0.004160">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:54.307089" elapsed="0.004489">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:54.286793" elapsed="0.024952">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:56.334271" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:56.334502" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:56.334703" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:56.325435" elapsed="0.009296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:56.340681" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:56.339665" elapsed="0.001059"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:56.337690" elapsed="0.003095"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:56.341052" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:56.340823" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:56.337671" elapsed="0.003493"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:56.341744" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:56.341377" elapsed="0.000491"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:56.341953" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:56.335258" elapsed="0.006887"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:56.334843" elapsed="0.007348"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:56.342420" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:56.342224" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:56.334816" elapsed="0.007773"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:56.342785" elapsed="0.000268"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:56.347241" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:56.343578" elapsed="0.003798">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<var name="${i}">6634</var>
<status status="FAIL" start="2026-04-28T03:03:56.343322" elapsed="0.004266">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:56.343135" elapsed="0.004647">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:56.324681" elapsed="0.023310">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:03:58.371295" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:03:58.371517" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:03:58.371692" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:03:58.362051" elapsed="0.009669"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.378482" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:03:58.377367" elapsed="0.001157"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:58.374796" elapsed="0.003805"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.378846" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:58.378638" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.374778" elapsed="0.004200"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.379533" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:58.379171" elapsed="0.000483"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:03:58.379718" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:03:58.372205" elapsed="0.007703"/>
</kw>
<status status="PASS" start="2026-04-28T03:03:58.371820" elapsed="0.008152"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.380212" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:58.380008" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.371796" elapsed="0.008557"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:03:58.380546" elapsed="0.000237"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.384828" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:03:58.381291" elapsed="0.003687">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<var name="${i}">6634</var>
<status status="FAIL" start="2026-04-28T03:03:58.381067" elapsed="0.004036">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:03:58.380860" elapsed="0.004384">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:03:58.361464" elapsed="0.023946">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<msg time="2026-04-28T03:03:58.385570" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:03:50.194166" elapsed="8.191601">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:03:50.037661" elapsed="8.348383">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '6634'</status>
</test>
<test id="s1-s3-t5" name="Start the Mininet and create custom topology" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:03:58.389601" elapsed="0.000219"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:03:58.389331" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:58.390967" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:58.390833" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.390812" elapsed="0.000225"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:58.395555" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:58.395449" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.395432" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.396606" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:03:58.396224" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.397096" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:03:58.396784" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:03:58.397166" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:03:58.397354" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:03:58.395840" elapsed="0.001538"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:58.402752" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:58.402643" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.402624" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:03:58.404064" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:03:58.403884" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.403867" elapsed="0.000264"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:03:58.404573" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:03:58.404271" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:58.404994" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:03:58.404752" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:03:58.439398" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:03:58.405560" elapsed="0.034020"/>
</kw>
<msg time="2026-04-28T03:03:58.439804" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:03:58.439852" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:58.405174" elapsed="0.034714"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:03:58.489254" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "S "t "a "r "t "[C "t "h "e "[C "M "i "n "i "n "e "t "[C "a "n "d "[C "c "r "e "a "t "e "[C "c "u "s "t "o "m "[C "t "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:03:58.440542" elapsed="0.048900"/>
</kw>
<msg time="2026-04-28T03:03:58.489643" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:03:58.489690" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "S "t "a "r "t "[C "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:58.440137" elapsed="0.049589"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.490142" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:58.489832" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.489803" elapsed="0.000423"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.490747" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "S "t "a "r "t "[C "t "h "e "[C "M "i "n "i "n "e "t "[C "a "n "d "[C "c "r "e "a "t "e "[C "c "u "s "t "o "m "[C "t "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:58.490361" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.491127" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:58.490896" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.490878" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:03:58.491240" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:58.492749" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:58.493808" elapsed="0.000486"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:03:58.494567" elapsed="0.000364"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:03:58.492120" elapsed="0.002930"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:03:58.491544" elapsed="0.003570"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:03:58.403583" elapsed="0.091630"/>
</kw>
<msg time="2026-04-28T03:03:58.495308" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:58.495416" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "S "t "a "r "t "[C "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:58.402976" elapsed="0.092479"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:03:58.495642" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:03:58.495533" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.495515" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.496155" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.496489" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:03:58.496561" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:03:58.402287" elapsed="0.094384"/>
</kw>
<msg time="2026-04-28T03:03:58.496766" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:03:58.496809" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "S "t "a "r "t "[C "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:58.397739" elapsed="0.099107"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.497182" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:58.496922" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.496905" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:03:58.397604" elapsed="0.099679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:03:58.397431" elapsed="0.099884"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:03:58.395096" elapsed="0.102276"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:03:58.390480" elapsed="0.106950"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:03:58.390041" elapsed="0.107436"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:03:58.387287" elapsed="0.110246"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.498726" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:58.498505" elapsed="0.000267"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:03:58.501374" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:03:58.501113" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:03:58.501095" elapsed="0.000358"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:58.501734" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:03:58.501834" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:03:58.501593" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.502520" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:03:58.502112" elapsed="0.000455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:03:58.503101" level="INFO">${conn_id} = 130</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:03:58.502716" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:03:58.504017" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:03:58.504094" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:03:58.503720" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:58.504265" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:03:58.505456" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:03:59.173537" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:48 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:03:58.505141" elapsed="0.668560"/>
</kw>
<msg time="2026-04-28T03:03:59.173807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:58.504775" elapsed="0.669121"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:03:58.503335" elapsed="0.670698"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:03:59.174531" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:04:00.312190" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:00.312590" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:00.312746" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:03:59.174287" elapsed="1.138544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:00.313506" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:00.315841" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:00.314861" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:00.316608" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:00.316308" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:00.316252" elapsed="0.000517"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:00.317156" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:04:00.316885" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:00.316852" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:00.317421" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.321816" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:00.322457" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:00.322777" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:00.318190" elapsed="0.004739"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:03:58.500576" elapsed="1.822461"/>
</kw>
<msg time="2026-04-28T03:04:00.323092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:03:58.499811" elapsed="1.823334"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:03:58.499332" elapsed="1.823893"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:00.325284" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:00.325023" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:00.325005" elapsed="0.000424"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:00.325735" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:00.325836" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:00.325570" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:00.326402" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:00.326022" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:00.326974" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:00.326597" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:00.327876" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:00.327967" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:00.327600" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.328141" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:00.329298" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:00.662368" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:59 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:00.328982" elapsed="0.333555"/>
</kw>
<msg time="2026-04-28T03:04:00.662623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.328618" elapsed="0.334091"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:00.327208" elapsed="0.335616"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:00.663333" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:04:00.696056" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:04:00.696314" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:00.696411" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:00.663078" elapsed="0.033384"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:00.696826" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:00.698982" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:00.698295" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:00.699555" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:00.699252" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:00.699202" elapsed="0.000512"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:00.700093" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:04:00.699829" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:00.699796" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:00.700351" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.706185" elapsed="0.000358"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:00.706700" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:00.707020" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:00.701056" elapsed="0.006116"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:00.324483" elapsed="0.382855"/>
</kw>
<msg time="2026-04-28T03:04:00.707393" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.323896" elapsed="0.383547"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:00.323401" elapsed="0.384120"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-28T03:03:58.498981" elapsed="2.208597"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:00.712346" level="INFO">${tools_connection} = 134</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:00.711973" elapsed="0.000399"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:00.714096" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:00.714173" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:00.713801" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.714344" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:00.715494" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:01.049481" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:00 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:00.715179" elapsed="0.334486"/>
</kw>
<msg time="2026-04-28T03:04:01.049752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.714816" elapsed="0.335021"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:00.713318" elapsed="0.336650"/>
</kw>
<msg time="2026-04-28T03:04:01.050023" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:00.712915" elapsed="0.337155"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:00.712548" elapsed="0.337601"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-28T03:04:01.050202" elapsed="0.000044"/>
</return>
<msg time="2026-04-28T03:04:01.050421" level="INFO">${mininet_conn_id} = 134</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-28T03:04:00.711482" elapsed="0.338965"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:01.051212" level="INFO">${mininet_conn_id} = 134</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:01.050757" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.066180" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-28T03:04:01.074704" level="INFO">'/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/libraries/../variables/ovsdb/ovsdb.py' -&gt; '/home/jenkins//ovsdb.py'</msg>
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-28T03:04:01.053881" elapsed="0.020957"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:01.051361" elapsed="0.023560"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:01.051330" elapsed="0.023691"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:01.076125" level="INFO">Start mininet --custom ovsdb.py --topo host,1 to 10.30.170.159</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:01.075378" elapsed="0.000853"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.080697" level="INFO">sudo mn --controller 'remote,ip=10.30.170.159,port=6633' --custom ovsdb.py --topo host,1 --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options} --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:01.076593" elapsed="0.004230"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.290729" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:
h1 
*** Adding switches:
s1 
*** Adding links:
(s1, h1) 
*** Configuring hosts
h1 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-28T03:04:01.081312" elapsed="0.209567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:01.291578" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:01.291228" elapsed="0.000399"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.292744" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:01.291790" elapsed="0.001012"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.304732" level="INFO">3bfd6e6f-a206-4746-b15d-d7e5055c5a05
    Manager "ptcp:6634"
        is_connected: true
    Bridge s1
        Controller "tcp:10.30.170.159:6633"
        Controller "ptcp:6654"
        fail_mode: secure
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-28T03:04:01.292978" elapsed="0.011818"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-28T03:04:01.304849" elapsed="0.000049"/>
</return>
<msg time="2026-04-28T03:04:01.305088" level="INFO">${conn_id1} = 134</msg>
<var>${conn_id1}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${MN_OPTS_S1}</arg>
<arg>${OVSDB_CONFIG_DIR}/ovsdb.py</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-04-28T03:03:58.497833" elapsed="2.807282"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:01.306463" level="INFO">Clear any existing mininet</msg>
<arg>Clear any existing mininet</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:01.306229" elapsed="0.000283"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:01.309087" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:01.308779" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:01.308757" elapsed="0.000442"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.309492" level="INFO">index=134
host=10.30.170.161
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:01.309598" level="INFO">${current_ssh_connection} = index=134
host=10.30.170.161
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:01.309354" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:01.310173" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:01.309772" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.310778" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:01.310392" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:01.311712" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:01.311791" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:01.311433" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:01.311983" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.313359" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:01.735877" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:49 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:01.312837" elapsed="0.423210"/>
</kw>
<msg time="2026-04-28T03:04:01.736130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:01.312483" elapsed="0.423727"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:01.311032" elapsed="0.425287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:01.736785" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:04:02.915114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:02.915510" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:02.915616" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:01.736549" elapsed="1.179128"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:02.916229" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:02.917890" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:02.917239" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:02.918562" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:02.918270" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:02.918222" elapsed="0.000531"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:02.919147" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:04:02.918873" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:02.918839" elapsed="0.000501"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:02.919415" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:02.926571" elapsed="0.000227"/>
</kw>
<msg time="2026-04-28T03:04:02.926866" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:02.925493" elapsed="0.001492"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:02.927214" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:02.927444" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:02.920117" elapsed="0.007447"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:01.308221" elapsed="1.619479"/>
</kw>
<msg time="2026-04-28T03:04:02.927776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:01.307591" elapsed="1.620254"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:01.307086" elapsed="1.622109"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:02.934194" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:02.933701" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:02.933668" elapsed="0.000669"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:02.934759" level="INFO">index=134
host=10.30.170.161
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:02.934920" level="INFO">${current_ssh_connection} = index=134
host=10.30.170.161
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:02.934551" elapsed="0.000432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:02.935791" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:02.935215" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:02.936690" level="INFO">${conn_id} = 136</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:02.936107" elapsed="0.000621"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:02.938477" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:02.938593" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:02.937723" elapsed="0.000907"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:02.938856" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:02.940752" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:03.279683" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:01 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:02.940229" elapsed="0.339656"/>
</kw>
<msg time="2026-04-28T03:04:03.279990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:02.939592" elapsed="0.340494"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:02.937146" elapsed="0.343089"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.280756" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:04:03.313634" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:04:03.313989" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:03.314089" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:03.280483" elapsed="0.033660"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:03.314561" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.316257" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:03.315564" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:03.316816" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:03.316533" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.316484" elapsed="0.000517"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:03.317350" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:04:03.317120" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.317086" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:03.317609" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:03.324931" elapsed="0.000367"/>
</kw>
<msg time="2026-04-28T03:04:03.325359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:03.323584" elapsed="0.001852"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:03.325600" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:03.325773" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:03.318322" elapsed="0.007537"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:02.932508" elapsed="0.393479"/>
</kw>
<msg time="2026-04-28T03:04:03.326060" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:02.930886" elapsed="0.395230"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:02.929652" elapsed="0.396546"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-04-28T03:04:01.306710" elapsed="2.019545"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.331208" level="INFO">${tools_connection} = 137</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:03.330792" elapsed="0.000443"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.334739" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:03.334826" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:03.332738" elapsed="0.002113"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:03.335027" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.336286" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:03.667852" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:03 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:03.335894" elapsed="0.332151"/>
</kw>
<msg time="2026-04-28T03:04:03.668131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:03.335539" elapsed="0.332675"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:03.332262" elapsed="0.336070"/>
</kw>
<msg time="2026-04-28T03:04:03.668385" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:03.331806" elapsed="0.336625"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:03.331431" elapsed="0.337076"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-28T03:04:03.668560" elapsed="0.000043"/>
</return>
<msg time="2026-04-28T03:04:03.668777" level="INFO">${mininet_conn_id} = 137</msg>
<var>${mininet_conn_id}</var>
<arg>ip_address=${mininet}</arg>
<arg>timeout=${timeout}</arg>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-28T03:04:03.330216" elapsed="0.338586"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.669512" level="INFO">${mininet_conn_id} = 137</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:03.669092" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${custom}' != '${EMPTY}'">
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.680065" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-28T03:04:03.688138" level="INFO">'/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/libraries/../variables/ovsdb/ovsdb.py' -&gt; '/home/jenkins//ovsdb.py'</msg>
<arg>${custom}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-28T03:04:03.671718" elapsed="0.016596"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:03.669638" elapsed="0.018772"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.669616" elapsed="0.018860"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.689655" level="INFO">Start mininet --custom ovsdb.py --topo host,2 to 10.30.170.159</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:03.688895" elapsed="0.000862"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.693599" level="INFO">sudo mn --controller 'remote,ip=10.30.170.159,port=6633' --custom ovsdb.py --topo host,2 --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options} --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:03.690119" elapsed="0.003568"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.852081" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:
h2 
*** Adding switches:
s2 
*** Adding links:
(s2, h2) 
*** Configuring hosts
h2 
*** Starting controller
c0 
*** Starting 1 switches
s2 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-28T03:04:03.693921" elapsed="0.158356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.853131" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:03.852672" elapsed="0.000528"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.854473" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:03.853433" elapsed="0.001118"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.863062" level="INFO">9a5df812-eb49-4477-a37e-2d464c02791d
    Manager "ptcp:6634"
        is_connected: true
    Bridge s2
        Controller "ptcp:6654"
        Controller "tcp:10.30.170.159:6633"
        fail_mode: secure
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
    ovs_version: "2.17.11"
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-28T03:04:03.854772" elapsed="0.008387"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-04-28T03:04:03.863311" elapsed="0.000052"/>
</return>
<msg time="2026-04-28T03:04:03.863542" level="INFO">${conn_id2} = 137</msg>
<var>${conn_id2}</var>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${MN_OPTS_S2}</arg>
<arg>${OVSDB_CONFIG_DIR}/ovsdb.py</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-04-28T03:04:01.305539" elapsed="2.558029"/>
</kw>
<doc>This will start mininet with custom topology on both the Virtual Machines</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:03:58.386369" elapsed="5.477327"/>
</test>
<test id="s1-s3-t6" name="Get Operational Topology with custom topology" line="69">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:03.907347" elapsed="0.000270"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:03.907027" elapsed="0.000661"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:03.908820" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:03.908681" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.908658" elapsed="0.000235"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:03.913618" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:03.913506" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.913486" elapsed="0.000202"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.914724" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:03.914318" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:03.915238" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:03.914910" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:03.915310" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:04:03.915629" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:03.913917" elapsed="0.001738"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:03.921024" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:03.920900" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.920881" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:03.922279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:03.922173" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:03.922156" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:03.922789" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:03.922485" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.923215" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:03.922985" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:03.953181" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:03.923727" elapsed="0.029799"/>
</kw>
<msg time="2026-04-28T03:04:03.953998" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:03.954106" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:03.923395" elapsed="0.030789"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:04.001594" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "c "u "s "t "o "m "[C "t "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:03.955517" elapsed="0.046363"/>
</kw>
<msg time="2026-04-28T03:04:04.002143" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:04.002191" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:03.954628" elapsed="0.047601"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.002683" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:04.002351" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:04.002314" elapsed="0.000642"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:04.003471" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "c "u "s "t "o "m "[C "t "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:04.003098" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.003823" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:04.003614" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:04.003596" elapsed="0.000361"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:04.003994" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:04.006801" elapsed="0.000181"/>
</kw>
<msg time="2026-04-28T03:04:04.007047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:04.005514" elapsed="0.001667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.007479" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.007805" elapsed="0.000102"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:04.004865" elapsed="0.003170"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:04.004302" elapsed="0.004022"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:03.921845" elapsed="0.086587"/>
</kw>
<msg time="2026-04-28T03:04:04.008529" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:04.008573" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:03.921237" elapsed="0.087370"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:04.008799" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:04:04.008687" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:04.008668" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.009313" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.009648" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:04.009719" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:03.920558" elapsed="0.089268"/>
</kw>
<msg time="2026-04-28T03:04:04.009920" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:04.009994" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:03.916088" elapsed="0.093944"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.010353" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:04.010109" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:04.010091" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:03.915924" elapsed="0.094530"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:03.915713" elapsed="0.094773"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:03.913132" elapsed="0.097410"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:03.908362" elapsed="0.102237"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:03.907842" elapsed="0.102803"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:03.865009" elapsed="0.145690"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:04.011276" level="INFO">@{list} = [ s1 | s2 ]</msg>
<var>@{list}</var>
<arg>s1</arg>
<arg>s2</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:04.010900" elapsed="0.000403"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:04.027802" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:04.030162" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3546'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:04.030385" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:04.019530" elapsed="0.010896"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:04.038163" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:04.037287" elapsed="0.000906"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:04.034825" elapsed="0.003409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.038412" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:04.038261" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:04.034799" elapsed="0.003688"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:04.038875" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:04.038621" elapsed="0.000432"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:04.039101" elapsed="0.000036"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:04.031108" elapsed="0.008130"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:04.030565" elapsed="0.008705"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:04.039433" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:04.039294" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:04.030533" elapsed="0.008973"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:04.039640" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:04.042720" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:04.040206" elapsed="0.002619">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<var name="${i}">s1</var>
<status status="FAIL" start="2026-04-28T03:04:04.040040" elapsed="0.002970">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:04.039888" elapsed="0.003219">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:04.019043" elapsed="0.024207">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:06.064370" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:06.064654" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3546'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:06.064801" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:06.055517" elapsed="0.009312"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:06.073721" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:06.072420" elapsed="0.001344"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:06.069330" elapsed="0.004496"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:06.074097" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:06.073868" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:06.069285" elapsed="0.004923"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:06.074802" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:06.074400" elapsed="0.000662"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:06.075129" elapsed="0.000052"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:06.065399" elapsed="0.009927"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:06.064973" elapsed="0.010398"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:06.075628" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:06.075405" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:06.064919" elapsed="0.010815"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:06.075922" elapsed="0.000269"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:06.080352" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:06.076721" elapsed="0.003744">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<var name="${i}">s1</var>
<status status="FAIL" start="2026-04-28T03:04:06.076473" elapsed="0.004134">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:06.076274" elapsed="0.004426">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:06.054686" elapsed="0.026157">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:08.103028" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:08.103394" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3546'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:08.103568" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:08.094033" elapsed="0.009572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:08.111457" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:08.110239" elapsed="0.001260"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:08.107551" elapsed="0.004006"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:08.111799" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:08.111595" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:08.107525" elapsed="0.004384"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:08.112480" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:08.112122" elapsed="0.000578"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:08.112771" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:08.104227" elapsed="0.008754"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:08.103734" elapsed="0.009291"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:08.113257" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:08.113059" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:08.103703" elapsed="0.009657"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:08.113552" elapsed="0.000235"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:08.117198" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:08.114322" elapsed="0.002978">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<var name="${i}">s1</var>
<status status="FAIL" start="2026-04-28T03:04:08.114108" elapsed="0.003320">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:08.113867" elapsed="0.003651">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:08.093417" elapsed="0.024239">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:10.140212" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:10.140481" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3546'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:10.140609" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:10.131427" elapsed="0.009209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:10.146647" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:10.145347" elapsed="0.001351"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:10.143419" elapsed="0.003339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:10.147028" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:10.146796" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:10.143401" elapsed="0.003737"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:10.147693" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:10.147327" elapsed="0.000582"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:10.147995" elapsed="0.000052"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:10.141110" elapsed="0.007079"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:10.140731" elapsed="0.007501"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:10.148460" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:10.148266" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:10.140708" elapsed="0.007852"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:10.148745" elapsed="0.000274"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:10.153125" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:10.149512" elapsed="0.003755">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<var name="${i}">s1</var>
<status status="FAIL" start="2026-04-28T03:04:10.149288" elapsed="0.004156">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:10.149100" elapsed="0.004474">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:10.130697" elapsed="0.023083">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:12.179036" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:12.179458" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3546'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:12.179708" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:12.168216" elapsed="0.011535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.189117" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:12.187926" elapsed="0.001228"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:12.185417" elapsed="0.003791"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.189423" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.189244" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.185398" elapsed="0.004114"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.190012" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.189684" elapsed="0.000579"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:12.190320" elapsed="0.000046"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:12.180716" elapsed="0.009773"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:12.179919" elapsed="0.010607"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.190726" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.190556" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.179876" elapsed="0.010935"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:12.190992" elapsed="0.000206"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.194817" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:12.191648" elapsed="0.003320">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<var name="${i}">s1</var>
<status status="FAIL" start="2026-04-28T03:04:12.191435" elapsed="0.003733">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:12.191271" elapsed="0.004020">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:12.167428" elapsed="0.028054">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<msg time="2026-04-28T03:04:12.196360" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:dat...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:04:04.011462" elapsed="8.185097">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df8...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes to make sure the mininet created custom topology</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:04:03.864191" elapsed="8.332676">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df8...
    [ Message content over the limit has been removed. ]
...node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1'</status>
</test>
<test id="s1-s3-t7" name="Add the bridge s1 in the config datastore of OVSDB Node1" line="80">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:12.201829" elapsed="0.000424"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:12.201418" elapsed="0.000923"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.203822" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.203638" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.203604" elapsed="0.000319"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.210908" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.210714" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.210681" elapsed="0.000371"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.212663" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:12.212043" elapsed="0.000663"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.213418" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:12.212963" elapsed="0.000493"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:12.213525" elapsed="0.000056"/>
</return>
<msg time="2026-04-28T03:04:12.213770" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:12.211424" elapsed="0.002383"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.225288" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.225005" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.224914" elapsed="0.000539"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.228674" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.228329" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.228279" elapsed="0.000550"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:12.229856" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.229173" elapsed="0.000743"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.230780" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.230290" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.266388" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:12.232022" elapsed="0.034537"/>
</kw>
<msg time="2026-04-28T03:04:12.266774" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:12.266823" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.231202" elapsed="0.035657"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.330583" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e "[C "b "r "i "d "g "e "[C "s "1 "[C "i "n "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[C "o "f "[C "O "[78CV "[A[78CS
 "D "B "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:12.267494" elapsed="0.063350"/>
</kw>
<msg time="2026-04-28T03:04:12.331144" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:12.331210" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.267099" elapsed="0.064160"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.331810" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.331403" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.331364" elapsed="0.000626"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.332652" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e "[C "b "r "i "d "g "e "[C "s "1 "[C "i "n "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[C "o "f "[C "O "[78CV "[A[78CS
 "D "B "[C "N "o "d "e "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.332182" elapsed="0.000620"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.333124" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.332870" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.332853" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:12.333239" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.336093" elapsed="0.000339"/>
</kw>
<msg time="2026-04-28T03:04:12.336496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:12.334825" elapsed="0.001801"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.336891" elapsed="0.000095"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.337236" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:12.334196" elapsed="0.003219"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:12.333604" elapsed="0.003875"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:12.227421" elapsed="0.110156"/>
</kw>
<msg time="2026-04-28T03:04:12.337671" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.337714" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.225818" elapsed="0.111931"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:12.337962" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-28T03:04:12.337827" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.337808" elapsed="0.000273"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.338482" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.338818" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.338888" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:12.224060" elapsed="0.114951"/>
</kw>
<msg time="2026-04-28T03:04:12.339104" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.339147" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.214377" elapsed="0.124805"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.339500" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.339257" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.339240" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:12.214183" elapsed="0.125415"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:12.213898" elapsed="0.125732"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:12.210079" elapsed="0.129606"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:12.203212" elapsed="0.136528"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.202555" elapsed="0.137229"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:12.198335" elapsed="0.141504"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:12.340790" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:12.341049" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:12.340634" elapsed="0.000442"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.341521" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.341270" elapsed="0.000278"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.342041" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.341699" elapsed="0.000371"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.342450" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.342221" elapsed="0.000255"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.342853" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/s1",
            "ovsdb:bridge-name": "s1",
            "ovsdb:protocol-entry": [
                {...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.342624" elapsed="0.000256"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.343263" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/s1",
            "ovsdb:bridge-name": "s1",
            "ovsdb:protocol-entry": [
                {...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.343042" elapsed="0.000247"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.343656" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/s1",
            "ovsdb:bridge-name": "s1",
            "ovsdb:protocol-entry": [
                {...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.343434" elapsed="0.000247"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.344259" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:12.343832" elapsed="0.000454"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.344783" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:12.344435" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.345215" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.344970" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.345641" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/s1",
            "ovsdb:bridge-name": "s1",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000051"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.345402" elapsed="0.000288"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:12.360330" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '841', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/s1",
            "ovsdb:bridge-name": "s1",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000051"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:12.360419" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:12.360577" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:12.345833" elapsed="0.014785"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.369303" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.364592" elapsed="0.004849"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.374215" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:12.369798" elapsed="0.004475"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:12.369498" elapsed="0.004855"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.364561" elapsed="0.009840"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.375284" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.374709" elapsed="0.000667"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:12.375474" elapsed="0.000070"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:12.361108" elapsed="0.014668"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:12.376182" elapsed="0.002594"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>s1</arg>
<arg>0000000000000051</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:04:12.340149" elapsed="0.038689"/>
</kw>
<doc>This request will add already operational bridge to the config data store of the OVSDB node.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:12.197403" elapsed="0.181574"/>
</test>
<test id="s1-s3-t8" name="Add the bridge s2 in the config datastore of OVSDB Node2" line="88">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:12.382298" elapsed="0.000217"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:12.382041" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.383604" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.383480" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.383459" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.388288" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.388182" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.388164" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.389338" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:12.388953" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.389812" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:12.389515" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:12.389882" elapsed="0.000033"/>
</return>
<msg time="2026-04-28T03:04:12.390057" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:12.388572" elapsed="0.001509"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.395447" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.395340" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.395321" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.396727" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.396617" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.396599" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:12.397254" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.396931" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.397656" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.397431" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.429606" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:12.398184" elapsed="0.031661"/>
</kw>
<msg time="2026-04-28T03:04:12.430092" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:12.430138" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.397836" elapsed="0.032337"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.495188" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e "[C "b "r "i "d "g "e "[C "s "2 "[C "i "n "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[C "o "f "[C "O "[78CV "[A[78CS
 "D "B "[C "N "o "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:12.430951" elapsed="0.064377"/>
</kw>
<msg time="2026-04-28T03:04:12.495503" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:12.495549" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.430410" elapsed="0.065174"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.496002" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.495684" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.495657" elapsed="0.000429"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.496543" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e "[C "b "r "i "d "g "e "[C "s "2 "[C "i "n "[C "t "h "e "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[C "o "f "[C "O "[78CV "[A[78CS
 "D "B "[C "N "o "d "e "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.496225" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.496898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.496692" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.496675" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:12.497030" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.499607" elapsed="0.000207"/>
</kw>
<msg time="2026-04-28T03:04:12.499877" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:12.498505" elapsed="0.001522"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.500295" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.500623" elapsed="0.000091"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:12.497869" elapsed="0.002961"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:12.497325" elapsed="0.003569"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:12.396317" elapsed="0.104690"/>
</kw>
<msg time="2026-04-28T03:04:12.501103" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.501146" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.395658" elapsed="0.105524"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:12.501366" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:12.501259" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.501241" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.501843" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.502199" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.502270" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:12.395000" elapsed="0.107378"/>
</kw>
<msg time="2026-04-28T03:04:12.502474" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.502517" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "A "d "d "[C "t "h "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.390447" elapsed="0.112105"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.502904" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.502630" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.502611" elapsed="0.000436"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:12.390312" elapsed="0.112758"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:12.390138" elapsed="0.112964"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:12.387789" elapsed="0.115369"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:12.383182" elapsed="0.120031"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.382724" elapsed="0.120533"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:12.380015" elapsed="0.123295"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:12.504307" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:12.504465" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:12.504153" elapsed="0.000338"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.504885" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.504638" elapsed="0.000273"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.505320" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.505080" elapsed="0.000266"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.505955" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.505496" elapsed="0.000487"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.506364" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/s2",
            "ovsdb:bridge-name": "s2",
            "ovsdb:protocol-entry": [
                {...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.506138" elapsed="0.000253"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.506803" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/s2",
            "ovsdb:bridge-name": "s2",
            "ovsdb:protocol-entry": [
                {...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.506538" elapsed="0.000297"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.507223" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/s2",
            "ovsdb:bridge-name": "s2",
            "ovsdb:protocol-entry": [
                {...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.506998" elapsed="0.000251"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.507774" level="INFO">${node_id_} = 10.30.171.239%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:12.507400" elapsed="0.000431"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.508337" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:12.507995" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.508746" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.508507" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.509191" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/s2",
            "ovsdb:bridge-name": "s2",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000052"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.171.239:6634']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.508945" elapsed="0.000295"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:12.523110" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '841', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.171.239:6634/bridge/s2",
            "ovsdb:bridge-name": "s2",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000052"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.171.239:6634']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:12.523229" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:12.523422" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:12.509416" elapsed="0.014063"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.533052" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.529038" elapsed="0.004101"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.536162" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:12.533361" elapsed="0.002838"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:12.533173" elapsed="0.003077"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.528995" elapsed="0.007285"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.536813" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.536474" elapsed="0.000398"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:12.536950" elapsed="0.000044"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:12.524142" elapsed="0.012985"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:12.537323" elapsed="0.003276"/>
</kw>
<arg>${TOOLS_SYSTEM2_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>s2</arg>
<arg>0000000000000052</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:04:12.503586" elapsed="0.037104"/>
</kw>
<doc>This request will add already operational bridge to the config data store of the OVSDB node.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:12.379302" elapsed="0.161543"/>
</test>
<test id="s1-s3-t9" name="Get Config Topology with s1 and s2 Bridges" line="96">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:12.545474" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:12.545219" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.546703" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.546589" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.546570" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.551565" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.551459" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.551442" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.552650" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:12.552269" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.553142" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:12.552830" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:12.553212" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:04:12.553365" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:12.551881" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.558551" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.558446" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.558429" elapsed="0.000188"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.559786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.559659" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.559608" elapsed="0.000246"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:12.560309" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.560013" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.560705" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.560485" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.594253" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:12.561225" elapsed="0.033134"/>
</kw>
<msg time="2026-04-28T03:04:12.594526" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:12.594571" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.560883" elapsed="0.033723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.644375" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "s "1 "[C "a "n "d "[C "s "2 "[C "B "r "i "d "g "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:12.595142" elapsed="0.049347"/>
</kw>
<msg time="2026-04-28T03:04:12.644654" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:12.644698" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "C "o "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.594777" elapsed="0.049956"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.645062" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.644817" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.644795" elapsed="0.000347"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.645572" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "s "1 "[C "a "n "d "[C "s "2 "[C "B "r "i "d "g "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.645277" elapsed="0.000368"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.645917" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.645712" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.645695" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:12.646047" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.648709" elapsed="0.001799"/>
</kw>
<msg time="2026-04-28T03:04:12.650576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:12.647477" elapsed="0.003236"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.650999" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.651323" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:12.646848" elapsed="0.004656"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:12.646321" elapsed="0.005246"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:12.559332" elapsed="0.092330"/>
</kw>
<msg time="2026-04-28T03:04:12.651776" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.651821" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "C "o "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.558759" elapsed="0.093097"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:12.652060" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:12.651948" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.651916" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.652533" elapsed="0.000072"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.652924" elapsed="0.000040"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.653011" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:12.558113" elapsed="0.095005"/>
</kw>
<msg time="2026-04-28T03:04:12.653209" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.653251" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "C "o "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.553751" elapsed="0.099534"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.653600" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.653359" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.653342" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:12.553616" elapsed="0.100089"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:12.553444" elapsed="0.100293"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:12.551098" elapsed="0.102692"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:12.546305" elapsed="0.107540"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.545873" elapsed="0.108016"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:12.542406" elapsed="0.111558"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.654408" level="INFO">@{list} = [ s1 | s2 ]</msg>
<var>@{list}</var>
<arg>s1</arg>
<arg>s2</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:12.654117" elapsed="0.000317"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:12.672009" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:12.673369" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1682'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.171.239:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.171.239"}},{"node-id":"ovsdb://10.30.171.239:6634/bridge/s2","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.171.239:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"s2","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000052"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]},{"node-id":"ovsdb://10.30.170.161:6634/bridge/s1","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"s1","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000051"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]},{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:12.673533" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:12.662362" elapsed="0.011207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.680928" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.171.239:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:12.680020" elapsed="0.000953"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:12.677300" elapsed="0.003713"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.681182" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.681039" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.677275" elapsed="0.004024"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.681682" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.171.239:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.171.239",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb://10.30.171.239:6634/bridge/s2",
                        "ovsdb:bridge-name": "s2",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000052"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.171.239:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634/bridge/s1",
                        "ovsdb:bridge-name": "s1",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000051"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.681435" elapsed="0.000319"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:12.681796" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:12.674133" elapsed="0.007787"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:12.673683" elapsed="0.008283"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.682132" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.681991" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.673657" elapsed="0.008546"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:12.682334" elapsed="0.000165"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:12.682842" elapsed="0.002568"/>
</kw>
<var name="${i}">s1</var>
<status status="PASS" start="2026-04-28T03:04:12.682688" elapsed="0.002762"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:12.685678" elapsed="0.002372"/>
</kw>
<var name="${i}">s2</var>
<status status="PASS" start="2026-04-28T03:04:12.685530" elapsed="0.002561"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:04:12.682553" elapsed="0.005567"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:04:12.661886" elapsed="0.026287"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:04:12.654590" elapsed="0.033637"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the config data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:12.541276" elapsed="0.147067"/>
</test>
<test id="s1-s3-t10" name="Create Vxlan Port and attach to s1 Bridge" line="107">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:12.693548" elapsed="0.000240"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:12.693286" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.694959" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.694826" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.694805" elapsed="0.000226"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.699831" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.699638" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.699615" elapsed="0.000287"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.701049" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:12.700635" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.701527" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:12.701231" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:12.701599" elapsed="0.000036"/>
</return>
<msg time="2026-04-28T03:04:12.701763" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:12.700219" elapsed="0.001568"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.707239" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.707131" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.707111" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.708507" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.708401" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.708383" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:12.709035" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.708718" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.709441" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.709214" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.741401" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:12.709986" elapsed="0.031524"/>
</kw>
<msg time="2026-04-28T03:04:12.741677" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:12.741723" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.709627" elapsed="0.032131"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.809002" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C "V "x "l "a "n "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "s "1 "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:12.742305" elapsed="0.066888"/>
</kw>
<msg time="2026-04-28T03:04:12.809397" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:12.809442" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.741933" elapsed="0.067545"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.809877" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.809586" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.809557" elapsed="0.000427"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.810489" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C "V "x "l "a "n "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "s "1 "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.810121" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.810838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.810632" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.810615" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:12.810970" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.813785" elapsed="0.000174"/>
</kw>
<msg time="2026-04-28T03:04:12.814022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:12.812547" elapsed="0.001670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.814506" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.814832" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:12.811906" elapsed="0.003242"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:12.811283" elapsed="0.003932"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:12.708099" elapsed="0.107216"/>
</kw>
<msg time="2026-04-28T03:04:12.815410" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.815455" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.707452" elapsed="0.108038"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:12.815697" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:12.815567" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.815549" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.816203" elapsed="0.000036"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.816592" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.816664" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:12.706767" elapsed="0.110183"/>
</kw>
<msg time="2026-04-28T03:04:12.817049" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.817092" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.702163" elapsed="0.114963"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.817443" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.817200" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.817184" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:12.702026" elapsed="0.115516"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:12.701839" elapsed="0.115736"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:12.699268" elapsed="0.118363"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:12.694497" elapsed="0.123194"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.694059" elapsed="0.123678"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:12.690099" elapsed="0.127690"/>
</kw>
<kw name="Add Vxlan To Bridge" owner="OVSDB">
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:12.826510" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:12.826666" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:12.826354" elapsed="0.000339"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.827097" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.30.171....</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.826841" elapsed="0.000283"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.827503" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.30.171....</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.827275" elapsed="0.000255"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.828136" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:12.827761" elapsed="0.000401"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.828652" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:12.828310" elapsed="0.000367"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:12.846157" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1/termination-point=s1-s2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1/termination-point=s1-s2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '386', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.30.171.239"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "s1-s2",
            "tp-id": "s1-s2"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:12.846305" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fs1/termination-point=s1-s2 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:12.846544" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:12.828822" elapsed="0.017781"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:12.847064" elapsed="0.005913"/>
</kw>
<arg>${node_ip}:${port}</arg>
<arg>${bridge}</arg>
<arg>${vxlan_port}</arg>
<arg>${remote_ip}</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on s1 for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:04:12.825849" elapsed="0.027234"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>s1</arg>
<arg>s1-s2</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>This request will create vxlan port for vxlan tunnel and attach it to the specific bridge</doc>
<status status="PASS" start="2026-04-28T03:04:12.818005" elapsed="0.035168"/>
</kw>
<doc>This request will create vxlan port/interface for vxlan tunnel and attach it to the specific bridge s1 of OVSDB node 1</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:12.688910" elapsed="0.164431"/>
</test>
<test id="s1-s3-t11" name="Create Vxlan Port and attach to s2 Bridge" line="111">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:12.858920" elapsed="0.000357"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:12.858536" elapsed="0.000821"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.860912" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.860725" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.860691" elapsed="0.000354"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.866827" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.866718" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.866701" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.867916" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:12.867503" elapsed="0.000456"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.868410" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:12.868115" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:12.868478" elapsed="0.000038"/>
</return>
<msg time="2026-04-28T03:04:12.868640" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:12.867134" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.874174" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.874048" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.874026" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.875450" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.875344" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.875327" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:12.876038" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.875708" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.876518" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.876288" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.906586" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:12.877043" elapsed="0.029771"/>
</kw>
<msg time="2026-04-28T03:04:12.907070" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:12.907118" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.876697" elapsed="0.030458"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:12.955512" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C "V "x "l "a "n "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "s "2 "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:12.907928" elapsed="0.047858"/>
</kw>
<msg time="2026-04-28T03:04:12.956040" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:12.956089" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.907412" elapsed="0.048715"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.956551" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.956243" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.956211" elapsed="0.000425"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.957164" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C "V "x "l "a "n "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "s "2 "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:12.956773" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.957521" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.957312" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.957295" elapsed="0.000303"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:12.957634" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:12.960490" elapsed="0.000167"/>
</kw>
<msg time="2026-04-28T03:04:12.960730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:12.959193" elapsed="0.001673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.961157" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.961480" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:12.958541" elapsed="0.003127"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:12.957973" elapsed="0.003760"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:12.875046" elapsed="0.086789"/>
</kw>
<msg time="2026-04-28T03:04:12.961949" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.961996" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.874404" elapsed="0.087632"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:12.962240" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:04:12.962123" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.962102" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.962741" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.963095" elapsed="0.000084"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.963229" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:12.873649" elapsed="0.089688"/>
</kw>
<msg time="2026-04-28T03:04:12.963431" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:12.963473" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "r "e "a "t "e "[C...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.869062" elapsed="0.094448"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:12.963970" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:12.963664" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.963569" elapsed="0.000485"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:12.868910" elapsed="0.095168"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:12.868728" elapsed="0.095383"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:12.866362" elapsed="0.097807"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:12.860282" elapsed="0.103944"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.859572" elapsed="0.104701"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:12.855428" elapsed="0.108899"/>
</kw>
<kw name="Add Vxlan To Bridge" owner="OVSDB">
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:12.973222" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:12.973403" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:12.973051" elapsed="0.000379"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.973829" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.30.170....</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.973588" elapsed="0.000268"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:12.974252" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.30.170....</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:12.974023" elapsed="0.000256"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.974831" level="INFO">${node_id_} = 10.30.171.239%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:12.974434" elapsed="0.000422"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:12.975364" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:12.975020" elapsed="0.000370"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:12.987440" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2/termination-point=s2-s1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2/termination-point=s2-s1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '386', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.30.170.161"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "s2-s1",
            "tp-id": "s2-s1"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:12.987497" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634%2Fbridge%2Fs2/termination-point=s2-s1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:12.987638" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:12.975537" elapsed="0.012127"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:12.987836" elapsed="0.002448"/>
</kw>
<arg>${node_ip}:${port}</arg>
<arg>${bridge}</arg>
<arg>${vxlan_port}</arg>
<arg>${remote_ip}</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on s2 for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:04:12.972474" elapsed="0.017942"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>s2</arg>
<arg>s2-s1</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This request will create vxlan port for vxlan tunnel and attach it to the specific bridge</doc>
<status status="PASS" start="2026-04-28T03:04:12.964532" elapsed="0.025949"/>
</kw>
<doc>This request will create vxlan port/interface for vxlan tunnel and attach it to the specific bridge s2 of OVSDB node 2</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:12.854066" elapsed="0.136537"/>
</test>
<test id="s1-s3-t12" name="Get Operational Topology with vxlan tunnel" line="115">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:12.993878" elapsed="0.000231"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:12.993620" elapsed="0.000544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.995188" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.995067" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.995043" elapsed="0.000217"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:12.999877" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:12.999770" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:12.999753" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.000929" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:13.000547" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.001421" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:13.001130" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:13.001490" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:04:13.001649" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:13.000179" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:13.007083" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:13.006973" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.006954" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:13.008351" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:13.008246" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.008229" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:13.008856" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:13.008554" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:13.009277" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:13.009053" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:13.046737" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:13.009779" elapsed="0.037097"/>
</kw>
<msg time="2026-04-28T03:04:13.047093" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:13.047139" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:13.009454" elapsed="0.037722"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:13.105687" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "v "x "l "a "n "[C "t "u "n "n "e "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:13.047774" elapsed="0.058049"/>
</kw>
<msg time="2026-04-28T03:04:13.106011" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:13.106059" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:13.047365" elapsed="0.058731"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.106440" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:13.106190" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.106162" elapsed="0.000439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.107077" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "v "x "l "a "n "[C "t "u "n "n "e "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:13.106739" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.107431" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:13.107225" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.107207" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:13.107562" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:13.110133" elapsed="0.000154"/>
</kw>
<msg time="2026-04-28T03:04:13.110348" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:13.109112" elapsed="0.001369"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.110746" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.111094" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:13.108435" elapsed="0.002839"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:13.107863" elapsed="0.003476"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:13.007918" elapsed="0.103518"/>
</kw>
<msg time="2026-04-28T03:04:13.111553" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:13.111599" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:13.007296" elapsed="0.104342"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:13.111822" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:04:13.111716" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.111698" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.112326" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.112662" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:13.112733" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:13.006617" elapsed="0.106224"/>
</kw>
<msg time="2026-04-28T03:04:13.112956" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:13.113003" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "G "e "t "[C "O "p "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:13.002055" elapsed="0.110987"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.113360" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:13.113117" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.113101" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:13.001904" elapsed="0.111554"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:13.001730" elapsed="0.111762"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:12.999399" elapsed="0.114150"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:12.994752" elapsed="0.118855"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:12.994311" elapsed="0.119342"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:12.991592" elapsed="0.122115"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.114286" level="INFO">@{list} = [ s1-s2 | s2-s1 | 10.30.170.161 | 10.30.171.239 ]</msg>
<var>@{list}</var>
<arg>s1-s2</arg>
<arg>s2-s1</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:13.113899" elapsed="0.000413"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:13.132083" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:13.133520" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4065'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:13.133662" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:13.122444" elapsed="0.011245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.139237" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:13.138348" elapsed="0.000919"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:13.136438" elapsed="0.002870"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.139480" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:13.139334" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.136421" elapsed="0.003152"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.139978" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:13.139715" elapsed="0.000423"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:13.140182" elapsed="0.000033"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:13.134088" elapsed="0.006223"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:13.133768" elapsed="0.006574"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:13.140506" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:13.140366" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:13.133750" elapsed="0.006828"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:13.140712" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:13.143847" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:13.141252" elapsed="0.002723">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<var name="${i}">s1-s2</var>
<status status="FAIL" start="2026-04-28T03:04:13.141093" elapsed="0.003017">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:13.140955" elapsed="0.003246">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:13.122001" elapsed="0.022338">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:15.168155" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:15.170463" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:15.170710" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:15.159175" elapsed="0.011576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:15.179370" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:15.178036" elapsed="0.001376"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:15.175296" elapsed="0.004174"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:15.179716" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:15.179510" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:15.175270" elapsed="0.004554"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:15.180391" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:15.180032" elapsed="0.000592"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:15.180689" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:15.171447" elapsed="0.009433"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:15.170898" elapsed="0.010026"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:15.181179" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:15.180980" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:15.170863" elapsed="0.010418"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:15.181466" elapsed="0.000236"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:15.185373" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:15.182204" elapsed="0.003279">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<var name="${i}">s1-s2</var>
<status status="FAIL" start="2026-04-28T03:04:15.181987" elapsed="0.003626">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:15.181781" elapsed="0.003923">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:15.158359" elapsed="0.027487">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:17.209694" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:17.210283" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:17.210584" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:17.198365" elapsed="0.012280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:17.220558" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:17.219593" elapsed="0.000996"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:17.217090" elapsed="0.003540"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:17.220807" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:17.220659" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:17.217048" elapsed="0.003836"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:17.221297" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:17.221037" elapsed="0.000439"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:17.221523" elapsed="0.000106"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:17.211617" elapsed="0.010115"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:17.210839" elapsed="0.010924"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:17.221955" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:17.221788" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:17.210792" elapsed="0.011240"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:17.222169" elapsed="0.000173"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:17.225431" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:17.222695" elapsed="0.002844">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<var name="${i}">s1-s2</var>
<status status="FAIL" start="2026-04-28T03:04:17.222536" elapsed="0.003152">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:17.222400" elapsed="0.003380">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:17.197598" elapsed="0.028319">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:19.248805" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:19.249125" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:19.249258" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:19.239393" elapsed="0.009892"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:19.256035" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:19.254530" elapsed="0.001547"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:19.252091" elapsed="0.004042"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:19.256376" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:19.256169" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:19.252073" elapsed="0.004408"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:19.257114" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:19.256685" elapsed="0.000661"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:19.257410" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:19.249727" elapsed="0.007872"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:19.249380" elapsed="0.008262"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:19.257871" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:19.257675" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:19.249357" elapsed="0.008635"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:19.258177" elapsed="0.000231"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:19.262486" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:19.258886" elapsed="0.003745">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<var name="${i}">s1-s2</var>
<status status="FAIL" start="2026-04-28T03:04:19.258671" elapsed="0.004147">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:19.258488" elapsed="0.004487">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:19.238610" elapsed="0.024562">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:21.286139" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.286554" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:21.286774" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:21.276397" elapsed="0.010417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.295600" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:21.294194" elapsed="0.001474"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:21.291239" elapsed="0.004494"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.296011" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.295774" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.291210" elapsed="0.004916"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.296698" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:21.296325" elapsed="0.000648"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:21.297043" elapsed="0.000052"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:21.287517" elapsed="0.009727"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:21.286984" elapsed="0.010305"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.297533" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.297326" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.286927" elapsed="0.010713"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:21.297838" elapsed="0.000275"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.302472" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:21.298637" elapsed="0.003992">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<var name="${i}">s1-s2</var>
<status status="FAIL" start="2026-04-28T03:04:21.298400" elapsed="0.004432">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:21.298201" elapsed="0.004796">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:21.275792" elapsed="0.027417">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<msg time="2026-04-28T03:04:21.303447" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:04:13.114476" elapsed="8.189205">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes to verify that the vxlan tunnel is created</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:04:12.990913" elapsed="8.313064">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 's1-s2'</status>
</test>
<test id="s1-s3-t13" name="Delete Bridges from config datastore" line="126">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:21.307124" elapsed="0.000222"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:21.306848" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.308490" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.308365" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.308344" elapsed="0.000216"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.313398" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.313287" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.313269" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.314659" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:21.314262" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.315161" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:21.314840" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:21.315231" elapsed="0.000032"/>
</return>
<msg time="2026-04-28T03:04:21.315392" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:21.313697" elapsed="0.001727"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.320665" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.320556" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.320538" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.321908" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.321801" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.321784" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:21.322438" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:21.322138" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.322842" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:21.322615" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.357057" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:21.323362" elapsed="0.033884"/>
</kw>
<msg time="2026-04-28T03:04:21.357447" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:21.357494" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.323036" elapsed="0.034495"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.398724" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "e "l "e "t "e "[C "B "r "i "d "g "e "s "[C "f "r "o "m "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:21.358165" elapsed="0.040793"/>
</kw>
<msg time="2026-04-28T03:04:21.399171" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:21.399217" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "e "l "e "t "e "[C...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.357745" elapsed="0.041509"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.399689" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.399363" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.399334" elapsed="0.000439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.400282" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "e "l "e "t "e "[C "B "r "i "d "g "e "s "[C "f "r "o "m "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:21.399910" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.400740" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.400529" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.400511" elapsed="0.000306"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:21.400853" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:21.403394" elapsed="0.001889"/>
</kw>
<msg time="2026-04-28T03:04:21.405357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:21.402381" elapsed="0.003114"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.405771" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.406123" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:21.401734" elapsed="0.004574"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:21.401176" elapsed="0.005197"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:21.321501" elapsed="0.084972"/>
</kw>
<msg time="2026-04-28T03:04:21.406570" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:21.406615" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "e "l "e "t "e "[C...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.320875" elapsed="0.085776"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:21.406857" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:04:21.406737" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.406716" elapsed="0.000244"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.407379" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.407727" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.407801" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:21.320219" elapsed="0.087690"/>
</kw>
<msg time="2026-04-28T03:04:21.408020" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:21.408065" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "e "l "e "t "e "[C...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.315857" elapsed="0.092243"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.408419" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.408175" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.408158" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:21.315718" elapsed="0.092798"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:21.315485" elapsed="0.093063"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:21.312906" elapsed="0.095697"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:21.308067" elapsed="0.100589"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.307566" elapsed="0.101134"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:21.304807" elapsed="0.103944"/>
</kw>
<kw name="Delete Bridge From Ovsdb Node" owner="OVSDB">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:21.422594" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161:6634%2Fbridge%2Fs1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161:6634%2Fbridge%2Fs1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.422705" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161:6634%2Fbridge%2Fs1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.423087" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${bridge}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:21.409357" elapsed="0.013789"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>s1</arg>
<doc>This request will delete the bridge node from the OVSDB</doc>
<status status="PASS" start="2026-04-28T03:04:21.408965" elapsed="0.014333"/>
</kw>
<kw name="Delete Bridge From Ovsdb Node" owner="OVSDB">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:21.436830" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239:6634%2Fbridge%2Fs2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239:6634%2Fbridge%2Fs2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.436902" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239:6634%2Fbridge%2Fs2 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.437075" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${bridge}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:21.424662" elapsed="0.012451"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}:${OVSDB_NODE_PORT}</arg>
<arg>s2</arg>
<doc>This request will delete the bridge node from the OVSDB</doc>
<status status="PASS" start="2026-04-28T03:04:21.423785" elapsed="0.013430"/>
</kw>
<doc>This request will delete the bridges from config data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:21.304248" elapsed="0.133130"/>
</test>
<test id="s1-s3-t14" name="Disconnect controller connection from the connected OVSDBs nodes" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:21.443687" elapsed="0.000532"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:21.443105" elapsed="0.001235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.446555" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.446295" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.446251" elapsed="0.000459"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.454254" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.454137" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.454119" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.455348" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:21.454928" elapsed="0.000448"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.455849" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:21.455547" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:21.455920" elapsed="0.000049"/>
</return>
<msg time="2026-04-28T03:04:21.456096" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:21.454552" elapsed="0.001569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.461683" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.461566" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.461547" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.463030" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.462849" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.462831" elapsed="0.000268"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:21.463581" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:21.463242" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.464014" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:21.463765" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.500177" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:21.464556" elapsed="0.035830"/>
</kw>
<msg time="2026-04-28T03:04:21.500603" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:21.500653" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.464193" elapsed="0.036622"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.568679" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "i "s "c "o "n "n "e "c "t "[C "c "o "n "t "r "o "l "l "e "r "[C "c "o "n "n "e "c "t "i "o "n "[C "f "r "o "m "[C "t "h "e "[C "c "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "O "V "S "D "B "s "[C "n "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:21.501514" elapsed="0.067409"/>
</kw>
<msg time="2026-04-28T03:04:21.569172" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:21.569219" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "i "s "c "o "n "n "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.501085" elapsed="0.068170"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.569692" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.569373" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.569341" elapsed="0.000436"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.570318" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "i "s "c "o "n "n "e "c "t "[C "c "o "n "t "r "o "l "l "e "r "[C "c "o "n "n "e "c "t "i "o "n "[C "f "r "o "m "[C "t "h "e "[C "c "o "n "n "[78Ce "[A[78Cc
 "t "e "d "[C "O "V "S "D "B "s "[C "n "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:21.569917" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.570675" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.570467" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.570450" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:21.570787" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:21.573507" elapsed="0.000161"/>
</kw>
<msg time="2026-04-28T03:04:21.573732" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:21.572348" elapsed="0.001521"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.574159" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.574481" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:21.571703" elapsed="0.002960"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:21.571106" elapsed="0.003621"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:21.462547" elapsed="0.112279"/>
</kw>
<msg time="2026-04-28T03:04:21.574922" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:21.574986" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "i "s "c "o "n "n "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.461903" elapsed="0.113119"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:21.575208" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:04:21.575101" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.575082" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.575706" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.576063" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.576135" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:21.461211" elapsed="0.115032"/>
</kw>
<msg time="2026-04-28T03:04:21.576338" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:21.576381" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "D "i "s "c "o "n "n "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.456490" elapsed="0.119927"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.576915" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.576667" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.576648" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:21.456354" elapsed="0.120681"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:21.456179" elapsed="0.120890"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:21.453746" elapsed="0.123381"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:21.445621" elapsed="0.131562"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.444659" elapsed="0.132570"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:21.438887" elapsed="0.138396"/>
</kw>
<kw name="Disconnect From Ovsdb Node" owner="OVSDB">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:21.590369" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.590432" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.590564" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:21.577854" elapsed="0.012737"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This request will disconnect the OVSDB node from the controller</doc>
<status status="PASS" start="2026-04-28T03:04:21.577483" elapsed="0.013188"/>
</kw>
<kw name="Disconnect From Ovsdb Node" owner="OVSDB">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:21.603840" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.603956" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.239%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.604097" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:21.591809" elapsed="0.012323"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>This request will disconnect the OVSDB node from the controller</doc>
<status status="PASS" start="2026-04-28T03:04:21.590901" elapsed="0.013323"/>
</kw>
<doc>This request will disconnect the controller from the connected OVSDB node for clean startup for next suite.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:21.437813" elapsed="0.166558"/>
</test>
<test id="s1-s3-t15" name="Verify that the operational topology is clean" line="138">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:21.609045" elapsed="0.000318"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:21.608663" elapsed="0.000777"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.610860" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.610690" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.610661" elapsed="0.000320"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.615893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.615787" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.615769" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.616961" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:21.616565" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.617430" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:21.617141" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:21.617498" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:04:21.617653" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:21.616196" elapsed="0.001481"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.623046" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.622923" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.622905" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.624287" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.624181" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.624163" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:21.624782" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:21.624488" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.625431" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:21.625191" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.658359" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:21.625950" elapsed="0.032566"/>
</kw>
<msg time="2026-04-28T03:04:21.658738" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:21.658784" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.625611" elapsed="0.033208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:21.708597" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "V "e "r "i "f "y "[C "t "h "a "t "[C "t "h "e "[C "o "p "e "r "a "t "i "o "n "a "l "[C "t "o "p "o "l "o "g "y "[C "i "s "[C "c "l "e "a "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:21.659505" elapsed="0.049219"/>
</kw>
<msg time="2026-04-28T03:04:21.708886" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:21.708931" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "V "e "r "i "f "y "[C...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.659061" elapsed="0.049926"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.709351" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.709093" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.709059" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.709881" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "V "e "r "i "f "y "[C "t "h "a "t "[C "t "h "e "[C "o "p "e "r "a "t "i "o "n "a "l "[C "t "o "p "o "l "o "g "y "[C "i "s "[C "c "l "e "a "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:21.709569" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.710248" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.710042" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.710024" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:21.710359" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:21.713111" elapsed="0.000159"/>
</kw>
<msg time="2026-04-28T03:04:21.713332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:21.711916" elapsed="0.001549"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.713730" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.714071" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:21.711241" elapsed="0.003019"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:21.710674" elapsed="0.003651"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:21.623857" elapsed="0.090564"/>
</kw>
<msg time="2026-04-28T03:04:21.714517" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:21.714560" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "V "e "r "i "f "y "[C...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.623257" elapsed="0.091397"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:21.714844" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:04:21.714734" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.714716" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.715354" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.715708" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:21.715779" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:21.622588" elapsed="0.093298"/>
</kw>
<msg time="2026-04-28T03:04:21.716009" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:21.716053" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "V "e "r "i "f "y "[C...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.618126" elapsed="0.097962"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.716406" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.716165" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.716148" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:21.617988" elapsed="0.098517"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:21.617789" elapsed="0.098752"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:21.615417" elapsed="0.101183"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:21.610279" elapsed="0.106380"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:21.609641" elapsed="0.107065"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:21.605694" elapsed="0.111070"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.717311" level="INFO">@{list} = [ 10.30.170.161 | 10.30.171.239 | s1 | s2 ]</msg>
<var>@{list}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>s1</arg>
<arg>s2</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:21.716923" elapsed="0.000414"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:21.738083" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:21.738482" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:21.738762" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:21.729490" elapsed="0.009311"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.747432" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:21.746026" elapsed="0.001451"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:21.743138" elapsed="0.004401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.747793" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.747579" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.743111" elapsed="0.004796"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.748316" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:21.748067" elapsed="0.000401"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:21.748516" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:21.739497" elapsed="0.009157"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:21.738958" elapsed="0.009729"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:21.748850" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:21.748711" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.738904" elapsed="0.010019"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:04:21.749166" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:21.749131" elapsed="0.000071"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:21.749117" elapsed="0.000106"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:04:21.749001" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:21.748985" elapsed="0.000280"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:21.749399" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:21.752524" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:21.749953" elapsed="0.002681">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<var name="${i}">10.30.170.161</var>
<status status="FAIL" start="2026-04-28T03:04:21.749766" elapsed="0.003005">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:21.749629" elapsed="0.003234">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-04-28T03:04:21.729004" elapsed="0.024025">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:23.782921" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:23.783661" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:23.784104" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:23.771754" elapsed="0.012434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:23.794516" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:23.793535" elapsed="0.001012"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:23.791535" elapsed="0.003056"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:23.794763" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:23.794618" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:23.791514" elapsed="0.003327"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:23.795249" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:23.794992" elapsed="0.000442"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:23.795481" elapsed="0.000037"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:23.785582" elapsed="0.010037"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:23.784477" elapsed="0.011174"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:23.795817" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:23.795675" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:23.784405" elapsed="0.011486"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:04:23.796131" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:23.796096" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:23.796081" elapsed="0.000109"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:04:23.795962" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:23.795945" elapsed="0.000286"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:23.796365" elapsed="0.000171"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:23.800230" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:23.796891" elapsed="0.003457">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<var name="${i}">10.30.170.161</var>
<status status="FAIL" start="2026-04-28T03:04:23.796728" elapsed="0.003766">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:23.796595" elapsed="0.003992">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-04-28T03:04:23.771108" elapsed="0.029618">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:25.827719" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:25.828020" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:25.828259" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:25.818604" elapsed="0.009714"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:25.839402" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:25.838456" elapsed="0.000975"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:25.834588" elapsed="0.004884"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:25.839644" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:25.839499" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:25.834547" elapsed="0.005175"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:25.840137" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:25.839857" elapsed="0.000450"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:25.840354" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:25.829260" elapsed="0.011237"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:25.828512" elapsed="0.012017"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:25.840695" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:25.840553" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:25.828464" elapsed="0.012303"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:04:25.841004" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:25.840969" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:25.840953" elapsed="0.000110"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:04:25.840823" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:25.840807" elapsed="0.000297"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:25.841239" elapsed="0.000167"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:25.844510" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:25.841784" elapsed="0.002831">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<var name="${i}">10.30.170.161</var>
<status status="FAIL" start="2026-04-28T03:04:25.841624" elapsed="0.003126">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:25.841475" elapsed="0.003366">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-04-28T03:04:25.818043" elapsed="0.026953">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:27.872825" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:27.873127" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:27.873382" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:27.864035" elapsed="0.009404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:27.885680" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:27.884205" elapsed="0.001505"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:27.879779" elapsed="0.005972"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:27.885922" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:27.885778" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:27.879738" elapsed="0.006277"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:27.886407" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:27.886154" elapsed="0.000428"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:27.886630" elapsed="0.000036"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:27.874382" elapsed="0.012383"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:27.873632" elapsed="0.013165"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:27.886977" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:27.886821" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:27.873586" elapsed="0.013464"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:04:27.887270" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:27.887235" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:27.887220" elapsed="0.000108"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:04:27.887105" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:27.887090" elapsed="0.000280"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:27.887505" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:27.890879" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:27.888037" elapsed="0.002963">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<var name="${i}">10.30.170.161</var>
<status status="FAIL" start="2026-04-28T03:04:27.887864" elapsed="0.003411">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:27.887731" elapsed="0.003643">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-04-28T03:04:27.863286" elapsed="0.028225">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:29.917295" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:29.917692" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '4223'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:29.917907" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:29.908541" elapsed="0.009429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:29.926185" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "d...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:29.924825" elapsed="0.001403"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:29.922099" elapsed="0.004188"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:29.926531" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:29.926326" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.922073" elapsed="0.004567"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:29.927225" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "link": [
                    {
                        "destination": {
                            "dest-node": "openflow:1",
                            "dest-tp": "openflow:1:2"
                        },
                        "link-id": "openflow:2:2",
                        "source": {
                            "source-node": "openflow:2",
                            "source-tp": "openflow:2:2"
                        }
                    },
                    {
                        "destination": {
                            "dest-node": "openflow:2",
                            "dest-tp": "openflow:2:2"
                        },
                        "link-id": "openflow:1:2",
                        "source": {
                            "source-node": "openflow:1",
                            "source-tp": "openflow:1:2"
                        }
                    }
                ],
                "node": [
                    {
                        "node-id": "openflow:2",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']",
                                "tp-id": "openflow:2:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']",
                                "tp-id": "openflow:2:1"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']",
                                "tp-id": "openflow:2:2"
                            }
                        ]
                    },
                    {
                        "node-id": "openflow:1",
                        "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']",
                        "termination-point": [
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']",
                                "tp-id": "openflow:1:2"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']",
                                "tp-id": "openflow:1:LOCAL"
                            },
                            {
                                "opendaylight-topology-inventory:inventory-node-connector-ref": "/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']",
                                "tp-id": "openflow:1:1"
                            }
                        ]
                    }
                ],
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:29.926830" elapsed="0.000630"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:29.927549" elapsed="0.000053"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:29.918591" elapsed="0.009155"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:29.918108" elapsed="0.009684"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:29.928057" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:29.927828" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.918075" elapsed="0.010091"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:04:29.928490" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:29.928440" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:29.928419" elapsed="0.000155"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:04:29.928251" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.928229" elapsed="0.000403"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:29.928821" elapsed="0.000276"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:29.933211" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:2:2"},"destination":{"dest-tp":"openflow:1:2","dest-node":"openflow:1"}},{"link-id":"openflow:1:2","source":{"source-node":"openflow:1","source-tp":"openflow:1:2"},"destination":{"dest-tp":"openflow:2:2","dest-node":"openflow:2"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:29.929591" elapsed="0.003862">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<var name="${i}">10.30.170.161</var>
<status status="FAIL" start="2026-04-28T03:04:29.929372" elapsed="0.004271">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:29.929180" elapsed="0.004598">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-04-28T03:04:29.907969" elapsed="0.026036">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<msg time="2026-04-28T03:04:29.934260" level="FAIL">Keyword 'Utils.Check For Elements Not At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:1']"}]}],"link":[{"link-id":"openflow:2:2","source":{"source-node":"openflow:2","source-tp":"openflow:...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:04:21.717504" elapsed="8.216915">Keyword 'Utils.Check For Elements Not At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</kw>
<doc>This request will verify the operational toplogy after the mininet is cleaned.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:04:21.604826" elapsed="8.329799">Keyword 'Utils.Check For Elements Not At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1","node":[{"node-id":"openflow:2","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']","termination-point":[{"tp-id":"openflow:2:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:LOCAL']"},{"tp-id":"openflow:2:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:1']"},{"tp-id":"openflow:2:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:2']/node-connector[id='openflow:2:2']"}]},{"node-id":"openflow:1","opendaylight-topology-inventory:inventory-node-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']","termination-point":[{"tp-id":"openflow:1:2","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:2']"},{"tp-id":"openflow:1:LOCAL","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1:LOCAL']"},{"tp-id":"openflow:1:1","opendaylight-topology-inventory:inventory-node-connector-ref":"/opendaylight-inventory:nodes/node[id='openflow:1']/node-connector[id='openflow:1...
    [ Message content over the limit has been removed. ]
...e-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' contains '10.30.170.161'</status>
</test>
<test id="s1-s3-t16" name="Check For Bug 4756" line="150">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:29.938021" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:29.937745" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:29.939326" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:29.939201" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.939181" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:29.944254" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:29.944140" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.944123" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:29.945341" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:29.944930" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:29.945822" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:29.945524" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:29.945893" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:29.946068" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:29.944556" elapsed="0.001537"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:29.951294" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:29.951184" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.951167" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:29.952566" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:29.952456" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:29.952437" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:29.953098" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:29.952771" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:29.953515" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:29.953275" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:29.983129" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:29.954040" elapsed="0.029195"/>
</kw>
<msg time="2026-04-28T03:04:29.983402" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:29.983449" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:29.953695" elapsed="0.029803"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.014246" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:29.984037" elapsed="0.030330"/>
</kw>
<msg time="2026-04-28T03:04:30.014540" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:30.014587" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:29.983670" elapsed="0.030952"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.014979" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.014709" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.014688" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.015574" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.015236" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.015983" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.015711" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.015693" elapsed="0.000371"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:30.016097" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:30.018617" elapsed="0.000157"/>
</kw>
<msg time="2026-04-28T03:04:30.018836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.017547" elapsed="0.001437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.019254" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.019624" elapsed="0.000221"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:30.016899" elapsed="0.003080"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:30.016359" elapsed="0.003690"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:29.952148" elapsed="0.068002"/>
</kw>
<msg time="2026-04-28T03:04:30.020243" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:30.020292" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:29.951527" elapsed="0.068801"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:30.020514" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:30.020405" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.020387" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.021024" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.021351" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.021423" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:29.950829" elapsed="0.070701"/>
</kw>
<msg time="2026-04-28T03:04:30.021623" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:30.021667" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:29.946458" elapsed="0.075244"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.022039" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.021776" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.021758" elapsed="0.000359"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:29.946316" elapsed="0.075823"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:29.946146" elapsed="0.076023"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:29.943763" elapsed="0.078459"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:29.938884" elapsed="0.083393"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:29.938449" elapsed="0.083871"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:29.935662" elapsed="0.086709"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.031582" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.031278" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.031259" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.031962" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:30.032105" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:30.031807" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.032661" level="INFO">Attempting to execute command "grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.032279" elapsed="0.000431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.033270" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:30.032860" elapsed="0.000437"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.034183" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:30.034261" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:30.033897" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.034437" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.035627" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:30.401691" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:46 UTC 2026

  System load:  0.62               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:03:46 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:30.035288" elapsed="0.366563"/>
</kw>
<msg time="2026-04-28T03:04:30.401955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.034917" elapsed="0.367123"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:30.033509" elapsed="0.368647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.402633" level="INFO">Executing command 'grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:04:30.415577" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:04:30.415852" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:04:30.416000" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:30.402392" elapsed="0.013667"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:30.416450" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.418099" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.417414" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.418674" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:30.418383" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.418333" elapsed="0.000498"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:30.419217" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-28T03:04:30.418977" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.418914" elapsed="0.000522"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.419511" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:30.426518" elapsed="0.000329"/>
</kw>
<msg time="2026-04-28T03:04:30.426975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.425338" elapsed="0.001782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.427581" elapsed="0.000062"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.427999" elapsed="0.000049"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:30.420216" elapsed="0.007975"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:30.030736" elapsed="0.397635"/>
</kw>
<msg time="2026-04-28T03:04:30.428486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.030185" elapsed="0.398351"/>
</kw>
<msg time="2026-04-28T03:04:30.428650" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:04:30.029556" elapsed="0.399119"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:04:30.428860" elapsed="0.000329"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>SimpleShardDataTreeCohort.*Unexpected failure in validation phase</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:04:30.028884" elapsed="0.400371"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.430439" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:30.430020" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:04:30.430684" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:30.430540" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.430522" elapsed="0.000242"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.430920" elapsed="0.000038"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.431106" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.431305" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.431472" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.431630" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.431783" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.431949" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.432182" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.432031" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:30.432015" elapsed="0.000246"/>
</if>
<arg>4756</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:04:30.429658" elapsed="0.002650"/>
</kw>
<doc>bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:29.935047" elapsed="0.497304"/>
</test>
<test id="s1-s3-t17" name="Check For Bug 4794" line="158">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:30.435818" elapsed="0.000246"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:30.435563" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.437091" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:30.436981" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.436962" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.443988" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:30.443721" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.443682" elapsed="0.000460"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.445182" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:30.444789" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.445657" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:30.445364" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:30.445725" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:30.445875" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:30.444425" elapsed="0.001474"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.451210" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:30.451035" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.451016" elapsed="0.000294"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.452473" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:30.452368" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.452350" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:30.452991" level="INFO">${karaf_connection_index} = 115</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:30.452672" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.453393" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:30.453169" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.484698" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:30.453892" elapsed="0.030913"/>
</kw>
<msg time="2026-04-28T03:04:30.485001" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:30.485048" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:30.453569" elapsed="0.031513"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.536307" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:30.487621" elapsed="0.048793"/>
</kw>
<msg time="2026-04-28T03:04:30.536575" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:30.536620" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:30.485246" elapsed="0.051409"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.536976" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.536735" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.536714" elapsed="0.000343"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.537495" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.537190" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.537836" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.537629" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.537611" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:30.537966" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:30.540467" elapsed="0.000155"/>
</kw>
<msg time="2026-04-28T03:04:30.540742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.539410" elapsed="0.001463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.541156" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.541477" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:30.538753" elapsed="0.002906"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:30.538225" elapsed="0.003497"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:30.452070" elapsed="0.089749"/>
</kw>
<msg time="2026-04-28T03:04:30.541909" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:30.541969" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:30.451455" elapsed="0.090552"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:30.542237" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:30.542128" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.542110" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.542706" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.543064" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.543134" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:30.450658" elapsed="0.092599"/>
</kw>
<msg time="2026-04-28T03:04:30.543348" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:30.543390" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "V "x "l "a "n "[C "E "x "t "e "n "s "i "o "n "[C "T "e "s "t ". "C "h "e "c "k "[C "F...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:30.446337" elapsed="0.097088"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.543740" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.543498" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.543481" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:30.446201" elapsed="0.097637"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:30.446019" elapsed="0.097849"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:30.442842" elapsed="0.101081"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:30.436682" elapsed="0.107314"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:30.436267" elapsed="0.107774"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:30.433309" elapsed="0.110782"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.553530" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.553264" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.553246" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.553882" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:30.554001" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:30.553750" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.554548" level="INFO">Attempting to execute command "grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.554172" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.555140" level="INFO">${conn_id} = 139</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:30.554745" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.556107" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:30.556183" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:30.555812" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.556355" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.557721" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:30.923381" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:46 UTC 2026

  System load:  0.62               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:30 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:30.557403" elapsed="0.366226"/>
</kw>
<msg time="2026-04-28T03:04:30.923715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.556826" elapsed="0.366972"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:30.555428" elapsed="0.368483"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.924405" level="INFO">Executing command 'grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:04:30.937271" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:04:30.937542" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:04:30.937641" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:30.924159" elapsed="0.013533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:30.938095" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.939734" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.939081" elapsed="0.000752"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.940340" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:30.940045" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.939991" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:30.940886" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-28T03:04:30.940645" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.940612" elapsed="0.000499"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:30.941184" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:30.948150" elapsed="0.000207"/>
</kw>
<msg time="2026-04-28T03:04:30.948418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.947358" elapsed="0.001147"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.948734" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.948980" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:30.941880" elapsed="0.007219"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:30.552725" elapsed="0.396505"/>
</kw>
<msg time="2026-04-28T03:04:30.949305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.552172" elapsed="0.397201"/>
</kw>
<msg time="2026-04-28T03:04:30.949528" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:04:30.551519" elapsed="0.398045"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:04:30.949825" elapsed="0.000452"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>Shard.*shard-topology-operational An exception occurred while preCommitting transaction</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:04:30.550800" elapsed="0.399568"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.952081" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:30.951458" elapsed="0.000661"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:04:30.952421" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:04:30.952222" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.952198" elapsed="0.000334"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.952770" elapsed="0.000032"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.953034" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.953280" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.953593" elapsed="0.000030"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.953837" elapsed="0.000030"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.954090" elapsed="0.000031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.954315" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.954642" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.954429" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:30.954406" elapsed="0.000342"/>
</if>
<arg>4794</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:04:30.950928" elapsed="0.003900"/>
</kw>
<doc>bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:30.432650" elapsed="0.522240"/>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:30.959879" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:30.959600" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:30.959577" elapsed="0.000442"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.960295" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:30.960398" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:30.960163" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.960992" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:30.960571" elapsed="0.000469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.961569" level="INFO">${conn_id} = 140</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:30.961193" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:30.962458" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:30.962534" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:30.962173" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.962708" elapsed="0.000616"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:30.964193" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:31.293493" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:00 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:30.963843" elapsed="0.329846"/>
</kw>
<msg time="2026-04-28T03:04:31.293782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.963493" elapsed="0.330397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:30.961806" elapsed="0.332225"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:31.294573" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:04:32.563898" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:32.564424" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:32.564528" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:31.294288" elapsed="1.270299"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:32.565061" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:32.566800" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br s1
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
( ip link del s1-eth1 ) 2&gt; /dev/null
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:32.566123" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:32.567426" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:32.567133" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:32.567083" elapsed="0.000502"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:32.567962" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-28T03:04:32.567701" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:32.567668" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:32.568236" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:32.575500" elapsed="0.000150"/>
</kw>
<msg time="2026-04-28T03:04:32.575694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.574460" elapsed="0.001305"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:32.575919" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:32.576096" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:32.568920" elapsed="0.007258"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:30.958799" elapsed="1.617474"/>
</kw>
<msg time="2026-04-28T03:04:32.576325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:30.958022" elapsed="1.618381"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:30.957362" elapsed="1.619156"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:32.578568" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:32.578297" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:32.578275" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.578926" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:32.579060" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:32.578795" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:32.579667" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:32.579275" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.580257" level="INFO">${conn_id} = 141</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:32.579863" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:32.581166" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:32.581242" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:32.580874" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.581454" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.582666" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:32.901277" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:31 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:32.582350" elapsed="0.319251"/>
</kw>
<msg time="2026-04-28T03:04:32.901754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.581985" elapsed="0.319942"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:32.580538" elapsed="0.321642"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.903059" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:04:32.946885" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:04:32.947395" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:32.947454" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:32.902602" elapsed="0.044885"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:32.947970" elapsed="0.000651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:32.949528" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:32.948995" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:32.949999" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:32.949734" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:32.949687" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:32.950362" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:04:32.950210" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:32.950188" elapsed="0.000322"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:32.950567" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:32.956283" elapsed="0.000438"/>
</kw>
<msg time="2026-04-28T03:04:32.956813" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.954866" elapsed="0.002083"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:32.957137" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:32.957301" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:32.951158" elapsed="0.006256"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:32.577777" elapsed="0.379752"/>
</kw>
<msg time="2026-04-28T03:04:32.957590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.577205" elapsed="0.380449"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:32.576738" elapsed="0.381005"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:04:30.956578" elapsed="2.001230"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:32.960516" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:32.960166" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:32.960133" elapsed="0.000472"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.960925" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:32.961059" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:32.960755" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:32.961633" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:32.961235" elapsed="0.000447"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.962276" level="INFO">${conn_id} = 142</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:32.961831" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:32.963190" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:32.963267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:32.962863" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.963446" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:32.964626" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:33.328654" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:32 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:32.964303" elapsed="0.364574"/>
</kw>
<msg time="2026-04-28T03:04:33.328995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.963949" elapsed="0.365156"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:32.962518" elapsed="0.366715"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.329764" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:04:33.352185" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:33.352455" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:33.352552" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:33.329487" elapsed="0.023115"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:33.353051" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:33.354662" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:33.354041" elapsed="0.000714"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:33.355243" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:33.354926" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:33.354876" elapsed="0.000523"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:33.355744" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-28T03:04:33.355515" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:33.355481" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:33.356040" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:33.363203" elapsed="0.000204"/>
</kw>
<msg time="2026-04-28T03:04:33.363469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.362338" elapsed="0.001218"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:33.363769" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:33.364094" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:33.356757" elapsed="0.007455"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:32.959514" elapsed="0.404845"/>
</kw>
<msg time="2026-04-28T03:04:33.364433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:32.958704" elapsed="0.405811"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:32.958117" elapsed="0.406506"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:33.367407" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:33.367041" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:33.367016" elapsed="0.000504"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.367905" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:33.368071" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:33.367718" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:33.368846" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:33.368311" elapsed="0.000601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.369755" level="INFO">${conn_id} = 143</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:33.369144" elapsed="0.000647"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:33.371005" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:33.371114" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:33.370606" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.371356" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.372990" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:33.702763" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:33 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:33.372532" elapsed="0.330452"/>
</kw>
<msg time="2026-04-28T03:04:33.703083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.372044" elapsed="0.331141"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:33.370131" elapsed="0.333175"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.703823" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:04:33.898038" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:33.898391" level="INFO">${stdout} =  * Exiting ovs-vswitchd (3492)
 * Exiting ovsdb-server (3475)</msg>
<msg time="2026-04-28T03:04:33.898492" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:33.703556" elapsed="0.194988"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:33.899021" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:33.900818" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:33.900013" elapsed="0.000900"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:33.901396" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:33.901113" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:33.901066" elapsed="0.000484"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:33.901989" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:04:33.901726" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:33.901688" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:33.902256" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:33.909120" elapsed="0.000319"/>
</kw>
<msg time="2026-04-28T03:04:33.909536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.907909" elapsed="0.001782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:33.910052" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:33.910393" elapsed="0.000043"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:33.902918" elapsed="0.007652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:33.366353" elapsed="0.544411"/>
</kw>
<msg time="2026-04-28T03:04:33.910880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.365534" elapsed="0.545502"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:33.364887" elapsed="0.546318"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:33.915043" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:33.914742" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:33.914722" elapsed="0.000403"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.915405" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:33.915511" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:33.915267" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:33.916084" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:33.915680" elapsed="0.000450"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.916655" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:33.916276" elapsed="0.000405"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:33.917557" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:33.917661" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:33.917247" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.917844" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:33.919295" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:34.246610" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:33 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:33.918726" elapsed="0.328146"/>
</kw>
<msg time="2026-04-28T03:04:34.246984" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.918358" elapsed="0.328725"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:33.916891" elapsed="0.330303"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.247832" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:04:34.260557" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:34.260714" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:34.260773" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:34.247440" elapsed="0.013365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:34.261052" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:34.262052" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:34.261641" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:34.262424" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:34.262234" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:34.262200" elapsed="0.000323"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:34.262743" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-28T03:04:34.262597" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:34.262576" elapsed="0.000283"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:34.262906" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:34.267163" elapsed="0.000204"/>
</kw>
<msg time="2026-04-28T03:04:34.267425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.266512" elapsed="0.000996"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:34.267721" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:34.267962" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:34.263353" elapsed="0.004725"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:33.914116" elapsed="0.354087"/>
</kw>
<msg time="2026-04-28T03:04:34.268275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:33.912636" elapsed="0.355720"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:33.911631" elapsed="0.356832"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:34.271221" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:34.270836" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:34.270811" elapsed="0.000523"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.271704" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:34.271846" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:34.271529" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:34.272634" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:34.272107" elapsed="0.000593"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.273467" level="INFO">${conn_id} = 145</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:34.272905" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:34.274972" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:34.275052" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:34.274477" elapsed="0.000599"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.275228" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.276391" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:34.599999" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:34 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:34.276078" elapsed="0.324073"/>
</kw>
<msg time="2026-04-28T03:04:34.600234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.275710" elapsed="0.324614"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:34.273812" elapsed="0.326623"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.600895" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:04:34.694302" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:34.694714" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:04:34.694814" level="INFO">${stderr} = 2026-04-28T03:04:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:34Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:34.600660" elapsed="0.094207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:34.695283" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:34.696809" level="INFO">2026-04-28T03:04:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:34.696198" elapsed="0.000712"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:34.697590" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:34.697117" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:34.697066" elapsed="0.000684"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:34.698139" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:04:34.697868" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:34.697834" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:34.698394" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:34.703794" elapsed="0.000163"/>
</kw>
<msg time="2026-04-28T03:04:34.704002" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.703229" elapsed="0.000834"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:34.704216" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:34.704370" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:34.699102" elapsed="0.005349"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:34.270172" elapsed="0.434369"/>
</kw>
<msg time="2026-04-28T03:04:34.704596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.269366" elapsed="0.435287"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:34.268729" elapsed="0.436002"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:04:30.956113" elapsed="3.748748"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:34.707744" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:34.707479" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:34.707461" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.708113" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:34.708215" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:34.707983" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:34.708770" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:34.708388" elapsed="0.000428"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.709369" level="INFO">${conn_id} = 146</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:34.708982" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:34.710237" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:34.710313" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:34.709964" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.710514" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:34.711668" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:35.036960" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:03 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:34.711355" elapsed="0.326517"/>
</kw>
<msg time="2026-04-28T03:04:35.037974" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.711007" elapsed="0.327061"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:34.709609" elapsed="0.328570"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:35.038640" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:04:36.306665" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:36.307264" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:36.307375" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:35.038408" elapsed="1.269030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:36.308104" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:36.310994" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br s2
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
( ip link del s2-eth1 ) 2&gt; /dev/null
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:36.309865" elapsed="0.001544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:36.312246" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:36.311709" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:36.311618" elapsed="0.000932"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:36.313164" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-28T03:04:36.312748" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:36.312694" elapsed="0.000792"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:36.313614" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:36.320107" elapsed="0.000168"/>
</kw>
<msg time="2026-04-28T03:04:36.320330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.319463" elapsed="0.000946"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:36.320608" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:36.320801" elapsed="0.000025"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:36.314788" elapsed="0.006112"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:34.706781" elapsed="1.614249"/>
</kw>
<msg time="2026-04-28T03:04:36.321089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:34.706221" elapsed="1.614930"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:34.705770" elapsed="1.615464"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:36.323359" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:36.323057" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:36.323036" elapsed="0.000405"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.323751" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:36.323871" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:36.323589" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:36.324490" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:36.324082" elapsed="0.000456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.325157" level="INFO">${conn_id} = 147</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:36.324689" elapsed="0.000495"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:36.326177" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:36.326286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:36.325747" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.326533" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.328345" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:36.670376" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:34 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:36.327793" elapsed="0.342872"/>
</kw>
<msg time="2026-04-28T03:04:36.670763" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.327247" elapsed="0.343623"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:36.325400" elapsed="0.345600"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.671732" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:04:36.704545" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:04:36.704864" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:36.705005" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:36.671229" elapsed="0.033834"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:36.705488" elapsed="0.000668"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:36.707209" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:36.706557" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:36.707753" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:36.707472" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:36.707425" elapsed="0.000483"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:36.708324" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:04:36.708059" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:36.708024" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:36.708589" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:36.715847" elapsed="0.000377"/>
</kw>
<msg time="2026-04-28T03:04:36.716391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.714794" elapsed="0.001740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:36.717078" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:36.717416" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:36.709297" elapsed="0.008202"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:36.322531" elapsed="0.395062"/>
</kw>
<msg time="2026-04-28T03:04:36.717647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.321918" elapsed="0.395790"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:36.321453" elapsed="0.396332"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:04:34.705472" elapsed="2.012370"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:36.719853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:36.719588" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:36.719570" elapsed="0.000377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.720223" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:36.720346" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:36.720091" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:36.720899" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:36.720519" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.721662" level="INFO">${conn_id} = 148</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:36.721262" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:36.722608" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:36.722686" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:36.722331" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.722862" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:36.724044" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:37.095137" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:36 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:36.723713" elapsed="0.371585"/>
</kw>
<msg time="2026-04-28T03:04:37.095412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.723363" elapsed="0.372179"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:36.721991" elapsed="0.373704"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.096371" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:04:37.119202" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:37.119434" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:37.119503" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:37.096026" elapsed="0.023515"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:37.119861" elapsed="0.000474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:37.121078" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:37.120629" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:37.121476" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:37.121267" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:37.121230" elapsed="0.000366"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:37.121822" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-28T03:04:37.121675" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:37.121654" elapsed="0.000315"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:37.122020" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:37.126751" elapsed="0.000247"/>
</kw>
<msg time="2026-04-28T03:04:37.127060" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.125840" elapsed="0.001311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:37.127398" elapsed="0.000035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:37.127648" elapsed="0.000033"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:37.122474" elapsed="0.005307"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:36.719107" elapsed="0.408812"/>
</kw>
<msg time="2026-04-28T03:04:37.128013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:36.718518" elapsed="0.409609"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:36.718051" elapsed="0.410172"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:37.131244" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:37.130655" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:37.130629" elapsed="0.000736"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.131740" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:37.131874" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:37.131569" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:37.132802" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:37.132196" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.133717" level="INFO">${conn_id} = 149</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:37.133139" elapsed="0.000619"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:37.135081" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:37.135206" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:37.134630" elapsed="0.000616"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.135488" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.137305" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:37.461384" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:37 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:37.136829" elapsed="0.324712"/>
</kw>
<msg time="2026-04-28T03:04:37.461628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.136262" elapsed="0.325459"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:37.134115" elapsed="0.327720"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.462358" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:04:37.717519" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:37.717785" level="INFO">${stdout} =  * Exiting ovs-vswitchd (893)
 * Exiting ovsdb-server (852)</msg>
<msg time="2026-04-28T03:04:37.717888" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:37.462098" elapsed="0.255883"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:37.718357" elapsed="0.000476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:37.719962" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:37.719264" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:37.720529" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:37.720238" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:37.720188" elapsed="0.000498"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:37.721074" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:04:37.720804" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:37.720770" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:37.721333" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:37.728187" elapsed="0.000321"/>
</kw>
<msg time="2026-04-28T03:04:37.728555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.727030" elapsed="0.001588"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:37.728774" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:37.729004" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:37.722031" elapsed="0.007058"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:37.130009" elapsed="0.599171"/>
</kw>
<msg time="2026-04-28T03:04:37.729233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.129190" elapsed="0.600102"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:37.128500" elapsed="0.600870"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:37.731354" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:37.731089" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:37.731071" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.731703" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:37.731830" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:37.731575" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:37.732408" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:37.732027" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.732991" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:37.732605" elapsed="0.000412"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:37.733833" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:37.733909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:37.733562" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.734098" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:37.735443" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:38.067349" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:37 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:37.734920" elapsed="0.332588"/>
</kw>
<msg time="2026-04-28T03:04:38.067591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.734575" elapsed="0.333131"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:37.733227" elapsed="0.334593"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.068335" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:04:38.080823" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:38.081003" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:38.081066" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:38.068066" elapsed="0.013032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:38.081321" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.082337" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:38.081911" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:38.082787" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:38.082597" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.082563" elapsed="0.000324"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:38.083132" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:04:38.082984" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.082961" elapsed="0.000287"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:38.083295" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:38.087751" elapsed="0.000227"/>
</kw>
<msg time="2026-04-28T03:04:38.088040" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.087070" elapsed="0.001056"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.088338" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.088553" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:38.083822" elapsed="0.004845"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:37.730592" elapsed="0.358202"/>
</kw>
<msg time="2026-04-28T03:04:38.088867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:37.730034" elapsed="0.358934"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:37.729569" elapsed="0.359511"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.091967" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:38.091534" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.091509" elapsed="0.000572"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.092451" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:38.092592" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:38.092278" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.093379" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:38.092828" elapsed="0.000617"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.094200" level="INFO">${conn_id} = 151</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.093656" elapsed="0.000580"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.095880" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:38.096018" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:38.095018" elapsed="0.001036"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.096270" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.097550" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:38.428525" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:48 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:37 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-1 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:38.097236" elapsed="0.331512"/>
</kw>
<msg time="2026-04-28T03:04:38.428826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.096862" elapsed="0.332048"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:38.094533" elapsed="0.334502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.429501" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:04:38.533520" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:38.533799" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:04:38.533904" level="INFO">${stderr} = 2026-04-28T03:04:38Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:38Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:38Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:38.429256" elapsed="0.104736"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:38.534385" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.536011" level="INFO">2026-04-28T03:04:38Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:38Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:04:38Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:38.535335" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:38.536580" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:38.536292" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.536244" elapsed="0.000492"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:38.537120" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-28T03:04:38.536853" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.536819" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:38.537386" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:38.544343" elapsed="0.000272"/>
</kw>
<msg time="2026-04-28T03:04:38.544675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.543092" elapsed="0.001667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.544990" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.545205" elapsed="0.000027"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:38.538095" elapsed="0.007221"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:38.090847" elapsed="0.454593"/>
</kw>
<msg time="2026-04-28T03:04:38.545515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.089993" elapsed="0.455602"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:38.089349" elapsed="0.456351"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:04:34.705111" elapsed="3.840665"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:38.554766" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:38.554991" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:38.555147" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:38.546371" elapsed="0.008878"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.562962" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:38.562116" elapsed="0.000888"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:38.559175" elapsed="0.003886"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.563295" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:38.563096" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.559149" elapsed="0.004351"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.564067" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:38.563695" elapsed="0.000447"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:38.564202" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:38.555666" elapsed="0.008710"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:38.573036" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0ezt29iq7njx7k3n7iocdgw5u2.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:38.573231" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:38.573354" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:38.564549" elapsed="0.008836"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.585305" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:38.584288" elapsed="0.001048"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:38.579404" elapsed="0.005977"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.585561" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:38.585408" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.579330" elapsed="0.006322"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.586172" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:38.585880" elapsed="0.000379"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:38.586306" elapsed="0.000036"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:38.574072" elapsed="0.012372"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:04:38.546082" elapsed="0.040416"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:38.586724" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-28T03:04:38.586646" elapsed="0.000186"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:04:30.955685" elapsed="7.631202"/>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-28T03:03:46.259642" elapsed="52.327280"/>
</suite>
<suite id="s1-s4" name="Configure 1 Ovsdb Node" source="/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot">
<kw name="Suite Setup" owner="OVSDB" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.671905" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:38.667547" elapsed="0.004449"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-28T03:04:38.667261" elapsed="0.004813"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.677073" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:04:38.673323" elapsed="0.003781"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-28T03:04:38.677448" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:38.677285" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.677247" elapsed="0.000275"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.678084" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:38.677693" elapsed="0.000437"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.678596" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:04:38.678283" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-28T03:04:38.679122" elapsed="0.000317"/>
</kw>
<msg time="2026-04-28T03:04:38.679541" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:38.679587" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:38.678776" elapsed="0.000834"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.680155" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:38.679769" elapsed="0.000412"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.681189" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:38.680907" elapsed="0.000308"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.681611" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:38.681353" elapsed="0.000284"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.682093" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.681784" elapsed="0.000335"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.685170" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.685858" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:38.685539" elapsed="0.000344"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.686040" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.687037" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:38.686729" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-28T03:04:38.687107" elapsed="0.000037"/>
</return>
<msg time="2026-04-28T03:04:38.687265" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-28T03:04:38.686451" elapsed="0.000838"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:38.687881" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.159:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63ef6cc50&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:04:38.687452" elapsed="0.000588"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.688193" elapsed="0.000190"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-28T03:04:38.684608" elapsed="0.003833"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:38.684398" elapsed="0.004090"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-28T03:04:38.682179" elapsed="0.006345"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.689093" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:38.688679" elapsed="0.000458"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.689688" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.159'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:38.689289" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.690279" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:04:38.689880" elapsed="0.000442"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-28T03:04:38.680427" elapsed="0.009951"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-28T03:04:38.672902" elapsed="0.017573"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:38.690662" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:38.690544" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.690524" elapsed="0.000205"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.693698" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:38.693324" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.694178" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:38.693871" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:38.694248" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:04:38.694400" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:38.693010" elapsed="0.001415"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:38.695404" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.695130" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.696132" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:38.696231" level="INFO">${current_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:38.695990" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:38.699678" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:38.699108" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:38.699089" elapsed="0.000711"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.700283" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:38.700510" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:38.700007" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.701481" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:38.700815" elapsed="0.000768"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.702768" level="INFO">${conn_id} = 152</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:38.701842" elapsed="0.000976"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:38.704531" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:38.704703" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:38.704184" elapsed="0.000562"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.705101" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:38.706651" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:39.030918" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:46 UTC 2026

  System load:  0.62               Processes:             130
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:30 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:38.706332" elapsed="0.324850"/>
</kw>
<msg time="2026-04-28T03:04:39.031272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.705884" elapsed="0.325546"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:38.703255" elapsed="0.328322"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.032436" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-28T03:04:39.046570" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-28T03:04:39.047201" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:39.047471" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:39.031920" elapsed="0.015678"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.048511" elapsed="0.001297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.052837" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.051151" elapsed="0.001990"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.054398" elapsed="0.000129"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.053687" elapsed="0.001058"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.053604" elapsed="0.001236"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:39.055649" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-28T03:04:39.055077" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.055033" elapsed="0.000890"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.056038" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.062530" elapsed="0.000248"/>
</kw>
<msg time="2026-04-28T03:04:39.062850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.061124" elapsed="0.002380"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.063921" elapsed="0.000095"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.064376" elapsed="0.000050"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.056750" elapsed="0.007793"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:38.698169" elapsed="0.366641"/>
</kw>
<msg time="2026-04-28T03:04:39.065096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.697364" elapsed="0.367809"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:04:38.696880" elapsed="0.368405"/>
</kw>
<msg time="2026-04-28T03:04:39.065342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:38.696401" elapsed="0.369005"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.069476" elapsed="0.000171"/>
</kw>
<msg time="2026-04-28T03:04:39.069695" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.068875" elapsed="0.000886"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.069909" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.070113" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.065891" elapsed="0.004302"/>
</kw>
<msg time="2026-04-28T03:04:39.070288" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-28T03:04:38.695635" elapsed="0.374677"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.070953" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.070587" elapsed="0.000432"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:04:39.071083" elapsed="0.000077"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-28T03:04:38.694772" elapsed="0.376514"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:38.694605" elapsed="0.376720"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:38.694476" elapsed="0.376885"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-28T03:04:38.690955" elapsed="0.380467"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:04:39.071587" elapsed="0.000224"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.085006" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.084857" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.084834" elapsed="0.000244"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.085380" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:39.085493" level="INFO">${current_ssh_connection_object} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.085234" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.085967" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.085682" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.086406" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.086161" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:39.087258" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:04:39.086990" elapsed="0.000371">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-28T03:04:39.087469" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:04:39.087515" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.086605" elapsed="0.000933"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.087829" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.087614" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.087596" elapsed="0.000330"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:39.088667" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.088402" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:04:39.088743" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:39.088890" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.088138" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.089077" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.090020" level="INFO">index=153
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:39.090126" level="INFO">${karaf_connection_object} = index=153
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.089654" elapsed="0.000499"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.090296" elapsed="0.002075"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.092789" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:04:39.275587" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.092528" elapsed="0.183298"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.279804" elapsed="0.000280"/>
</kw>
<msg time="2026-04-28T03:04:39.280150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.279147" elapsed="0.001078"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.280378" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.280533" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.276900" elapsed="0.003718"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:39.276226" elapsed="0.004440"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.084531" elapsed="0.196189"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:04:39.072588" elapsed="0.208180"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.072210" elapsed="0.208610"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:39.072051" elapsed="0.208809"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-28T03:04:39.071873" elapsed="0.209025"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-28T03:04:38.672435" elapsed="0.608540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.283553" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.283428" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.283404" elapsed="0.000224"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.288307" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.288195" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.288177" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.289358" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:39.288928" elapsed="0.000457"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.289838" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:39.289536" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:39.289908" elapsed="0.000048"/>
</return>
<msg time="2026-04-28T03:04:39.290084" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:39.288598" elapsed="0.001511"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.295279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.295171" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.295153" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.296642" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.296510" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.296492" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:39.297194" level="INFO">${karaf_connection_index} = 153</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.296846" elapsed="0.000374"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.297611" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.297371" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.332407" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "v "s "[78Cd "[A[78Cb</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:39.298343" elapsed="0.034239"/>
</kw>
<msg time="2026-04-28T03:04:39.332852" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:39.332898" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.297786" elapsed="0.035163"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.419780" level="INFO">"- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "1 "0 "_ "_ "c "o "n "f "i "g "u "r "e "_ "1 "_ "o "v "s "d "b "_ "n "o "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:39.333709" elapsed="0.086349"/>
</kw>
<msg time="2026-04-28T03:04:39.420262" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:39.420310" level="INFO">${message_wait} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.333156" elapsed="0.087190"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.420821" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.420468" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.420433" elapsed="0.000590"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.421603" level="INFO"> "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "1 "0 "_ "_ "c "o "n "f "i "g "u "r "e "_ "1 "_ "o "v "s "d "b "_ "n "o "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.421165" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.422020" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.421770" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.421752" elapsed="0.000441"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:39.422232" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.424968" elapsed="0.000171"/>
</kw>
<msg time="2026-04-28T03:04:39.425183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.424301" elapsed="0.001008"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.425642" elapsed="0.000065"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.426037" elapsed="0.000064"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.423474" elapsed="0.002728"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:39.422540" elapsed="0.003794"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:39.296220" elapsed="0.130215"/>
</kw>
<msg time="2026-04-28T03:04:39.426529" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:39.426572" level="INFO">${message} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.295516" elapsed="0.131095"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:39.428765" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-28T03:04:39.426688" elapsed="0.002145"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.426670" elapsed="0.002187"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.429287" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.429622" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.429693" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:39.294839" elapsed="0.134963"/>
</kw>
<msg time="2026-04-28T03:04:39.429896" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:39.430007" level="INFO">${output} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.290474" elapsed="0.139571"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.430368" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.430122" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.430104" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:39.290340" elapsed="0.140128"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:39.290165" elapsed="0.140334"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:39.287875" elapsed="0.142678"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-28T03:04:39.281567" elapsed="0.149042"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.281127" elapsed="0.149524"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-28T03:04:38.666874" elapsed="0.763827"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.443894" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.443783" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.443764" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.444278" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:39.444386" level="INFO">${current_ssh_connection_object} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.444129" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.444838" level="INFO">{1: 153}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.444557" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.445292" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.445044" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.445852" elapsed="0.000205"/>
</kw>
<msg time="2026-04-28T03:04:39.446153" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:39.446197" level="INFO">${old_connection_index} = 153</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.445488" elapsed="0.000732"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.447037" elapsed="0.000150"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.459705" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:39.447658" elapsed="0.012111"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.447343" elapsed="0.012479"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.460338" elapsed="0.000363"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.460014" elapsed="0.000737"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:04:39.446507" elapsed="0.014289"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:39.446294" elapsed="0.014552"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.446277" elapsed="0.014594"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:39.461794" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.461472" elapsed="0.000352"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:04:39.461876" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:04:39.462055" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.461119" elapsed="0.000963"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.462263" elapsed="0.000448"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.463065" level="INFO">index=154
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:39.463272" level="INFO">${karaf_connection_object} = index=154
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.462874" elapsed="0.000428"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.463446" elapsed="0.002937"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.467012" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:04:39.602075" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.466602" elapsed="0.135645"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.606169" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:04:39.606381" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.605600" elapsed="0.000853"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.606607" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.606762" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.603394" elapsed="0.003451"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:39.602664" elapsed="0.004263"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.442161" elapsed="0.164841"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:39.607481" level="INFO">Creating Session using : alias=session, url=http://10.30.170.159:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b64511d090&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:04:39.607148" elapsed="0.000515"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:39.616027" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:39.616180" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Mon, 27-Apr-2026 03:04:39 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:39.616386" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:39.608284" elapsed="0.008129"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.622342" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:39.621450" elapsed="0.000935"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:39.618910" elapsed="0.003536"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.622765" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.622546" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.618850" elapsed="0.004069"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.623532" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.623149" elapsed="0.000465"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:39.623681" elapsed="0.000046"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:39.616697" elapsed="0.007173"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:39.632030" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:39.632214" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:39.632333" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:39.624101" elapsed="0.008258"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.637446" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:39.636702" elapsed="0.000773"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:39.634819" elapsed="0.002696"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.637684" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.637544" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.634800" elapsed="0.002959"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.638153" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.637888" elapsed="0.000385"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:39.638317" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:39.632625" elapsed="0.005818"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:04:39.608076" elapsed="0.030417"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:38.666521" elapsed="0.972018"/>
</kw>
<test id="s1-s4-t1" name="Make the OVS instance to listen for connection" line="28">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:39.642754" elapsed="0.000378"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:39.642376" elapsed="0.000838"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.644907" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.644745" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.644718" elapsed="0.000323"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.651768" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.651662" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.651645" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.652812" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:39.652432" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.653303" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:39.653006" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:39.653373" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:04:39.653527" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:39.652067" elapsed="0.001484"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.658687" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.658581" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.658563" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.659991" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:39.659857" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.659839" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:39.660490" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.660193" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.660885" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.660664" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.693577" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:39.661400" elapsed="0.032287"/>
</kw>
<msg time="2026-04-28T03:04:39.693868" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:39.693914" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.661078" elapsed="0.032892"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.745355" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "M "a "k "e "[C "t "h "e "[C "O "V "S "[C "i "n "s "t "a "n "c "e "[C "t "o "[C "l "i "s "t "e "n "[C "f "o "r "[C "c "o "n "n "e "c "t "i "[78Co "[A[78Cn
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:39.694477" elapsed="0.050995"/>
</kw>
<msg time="2026-04-28T03:04:39.745637" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:39.745682" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "M "a "k "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.694135" elapsed="0.051585"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.746032" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.745797" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.745778" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.746593" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "M "a "k "e "[C "t "h "e "[C "O "V "S "[C "i "n "s "t "a "n "c "e "[C "t "o "[C "l "i "s "t "e "n "[C "f "o "r "[C "c "o "n "n "e "c "t "i "[78Co "[A[78Cn
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.746289" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.746979" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.746739" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.746722" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:39.747089" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:39.749592" elapsed="0.000156"/>
</kw>
<msg time="2026-04-28T03:04:39.749809" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.748491" elapsed="0.001461"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.750218" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.750536" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:39.747877" elapsed="0.002839"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:39.747354" elapsed="0.003424"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:39.659557" elapsed="0.091354"/>
</kw>
<msg time="2026-04-28T03:04:39.751042" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:39.751084" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "M "a "k "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.658954" elapsed="0.092167"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:39.751304" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:39.751197" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.751179" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.751774" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.752117" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:39.752189" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:39.658240" elapsed="0.094054"/>
</kw>
<msg time="2026-04-28T03:04:39.752386" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:39.752429" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "M "a "k "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.653914" elapsed="0.098551"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.752781" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.752540" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.752522" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:39.653781" elapsed="0.099097"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:39.653607" elapsed="0.099301"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:39.651181" elapsed="0.101796"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:39.644310" elapsed="0.108722"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:39.643426" elapsed="0.109651"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:39.639188" elapsed="0.113941"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:39.755260" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:39.755002" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:39.754983" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.755604" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:39.755704" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:39.755477" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.756269" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:39.755871" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.756834" level="INFO">${conn_id} = 155</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:39.756462" elapsed="0.000398"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:39.757743" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:39.757820" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:39.757465" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.758005" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:39.759453" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:40.116211" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:34 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:39.758844" elapsed="0.357525"/>
</kw>
<msg time="2026-04-28T03:04:40.116454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.758480" elapsed="0.358054"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:39.757081" elapsed="0.359569"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.117145" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:04:40.140141" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:40.140394" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:40.140491" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:40.116881" elapsed="0.023660"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:40.140891" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.142486" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.141818" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.143122" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:40.142791" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.142740" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:40.143651" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:04:40.143406" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.143372" elapsed="0.000463"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.143908" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:40.151040" elapsed="0.000332"/>
</kw>
<msg time="2026-04-28T03:04:40.151471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.149748" elapsed="0.001829"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.151729" elapsed="0.000085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.151965" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:40.144629" elapsed="0.007419"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:39.754427" elapsed="0.397715"/>
</kw>
<msg time="2026-04-28T03:04:40.152195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:39.753857" elapsed="0.398384"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:39.753321" elapsed="0.399000"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.154474" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:40.154201" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.154180" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.154849" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:40.154969" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:40.154714" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.155522" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.155139" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.156109" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:40.155717" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.157283" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:40.157361" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:40.156727" elapsed="0.000658"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.157539" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.158729" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:40.522241" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:40 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:40.158394" elapsed="0.364069"/>
</kw>
<msg time="2026-04-28T03:04:40.522562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.158043" elapsed="0.364608"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:40.156341" elapsed="0.366443"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.523372" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:04:40.556103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:40.556442" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:04:40.556540" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:40.523065" elapsed="0.033543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:40.557102" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.559002" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.558235" elapsed="0.000865"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.559593" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:40.559288" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.559232" elapsed="0.000525"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:40.560147" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-28T03:04:40.559873" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.559840" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.560418" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:40.567832" elapsed="0.000169"/>
</kw>
<msg time="2026-04-28T03:04:40.568049" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.566642" elapsed="0.001475"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.568270" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.568423" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:40.561201" elapsed="0.007327"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:40.153652" elapsed="0.414983"/>
</kw>
<msg time="2026-04-28T03:04:40.568690" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.153078" elapsed="0.415661"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:${OVSDB_NODE_PORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:40.152522" elapsed="0.416302"/>
</kw>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:39.638602" elapsed="0.930364"/>
</test>
<test id="s1-s4-t2" name="Connect to OVSDB Node" line="32">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:40.573109" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:40.572837" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.574391" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:40.574262" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.574243" elapsed="0.000237"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.579264" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:40.579156" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.579138" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.580463" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:40.580012" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.581059" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:40.580700" elapsed="0.000387"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:40.581131" elapsed="0.000042"/>
</return>
<msg time="2026-04-28T03:04:40.581302" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:40.579612" elapsed="0.001715"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.586719" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:40.586606" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.586584" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.588057" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:40.587915" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.587897" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:40.588668" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:40.588264" elapsed="0.000433"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.589134" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:40.588851" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.620527" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:40.589675" elapsed="0.030987"/>
</kw>
<msg time="2026-04-28T03:04:40.620856" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:40.620903" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:40.589315" elapsed="0.031649"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.660461" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:40.621498" elapsed="0.039089"/>
</kw>
<msg time="2026-04-28T03:04:40.660769" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:40.660825" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:40.621144" elapsed="0.039729"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.661249" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:40.661000" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.660973" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.661809" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.661472" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.662183" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:40.661970" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.661951" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:40.662296" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:40.665135" elapsed="0.000167"/>
</kw>
<msg time="2026-04-28T03:04:40.665365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.663881" elapsed="0.001619"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.665805" elapsed="0.000079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.666157" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:40.663224" elapsed="0.003218"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:40.662646" elapsed="0.004012"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:40.587606" elapsed="0.079158"/>
</kw>
<msg time="2026-04-28T03:04:40.666858" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:40.666903" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:40.586929" elapsed="0.080029"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:40.667147" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:40.667038" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.667019" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.667649" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.668000" elapsed="0.000077"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:40.668127" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:40.586222" elapsed="0.082017"/>
</kw>
<msg time="2026-04-28T03:04:40.668334" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:40.668377" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:40.581733" elapsed="0.086682"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.668768" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:40.668490" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.668472" elapsed="0.000376"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:40.581585" elapsed="0.087287"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:40.581389" elapsed="0.087518"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:40.578774" elapsed="0.090211"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:40.573966" elapsed="0.095077"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:40.573516" elapsed="0.095575"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:40.570290" elapsed="0.098858"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:40.669988" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:40.670174" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:40.669800" elapsed="0.000401"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:40.670621" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:40.670349" elapsed="0.000299"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:40.671046" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:40.670798" elapsed="0.000275"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.671579" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:40.671223" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.672018" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.671755" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.672445" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.672204" elapsed="0.000288"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:40.684080" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:40.684130" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:40.684242" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:40.672647" elapsed="0.011622"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.695002" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:40.690235" elapsed="0.004833"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.697271" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:40.695239" elapsed="0.002060"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:40.695095" elapsed="0.002241"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.690190" elapsed="0.007168"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.697786" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.697511" elapsed="0.000319"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:40.697875" elapsed="0.000033"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:40.684570" elapsed="0.013455"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:40.698168" elapsed="0.002552"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:04:40.669400" elapsed="0.031389"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:40.712015" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:40.711718" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:40.711699" elapsed="0.000400"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.712377" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:40.712480" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:40.712238" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.713085" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:40.712668" elapsed="0.000463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.713677" level="INFO">${conn_id} = 157</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:40.713278" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:40.714615" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:40.714696" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:40.714315" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.714868" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:40.716078" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:41.070544" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:40 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:40.715735" elapsed="0.354971"/>
</kw>
<msg time="2026-04-28T03:04:41.070799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.715367" elapsed="0.355521"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:40.713909" elapsed="0.357111"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:41.071500" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:04:41.094418" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:41.094728" level="INFO">${stdout} = 6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:04:41.094833" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:41.071254" elapsed="0.023630"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:41.095442" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:41.097009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:41.096342" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:41.097589" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:41.097292" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:41.097242" elapsed="0.000507"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:41.098143" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-28T03:04:41.097868" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:41.097834" elapsed="0.000556"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:41.098465" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:41.103162" elapsed="0.000210"/>
</kw>
<msg time="2026-04-28T03:04:41.103432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:41.102295" elapsed="0.001227"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:41.103731" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:41.104045" elapsed="0.000036"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:41.098969" elapsed="0.005214"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:40.711172" elapsed="0.393139"/>
</kw>
<msg time="2026-04-28T03:04:41.104386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:40.710560" elapsed="0.393902"/>
</kw>
<msg time="2026-04-28T03:04:41.104676" level="INFO">${output} = 6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:40.710006" elapsed="0.394709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:41.105341" level="INFO">6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:41.104979" elapsed="0.000684"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:41.106654" level="FAIL">'6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:41.106104" elapsed="0.000650">'6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:04:41.105774" elapsed="0.001080">'6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:04:41.105747" elapsed="0.001153">'6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:41.107217" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:41.107022" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:04:41.106998" elapsed="0.000329"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:04:41.107372" elapsed="0.000021"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:04:40.709524" elapsed="0.397996">'6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:04:41.107609" elapsed="0.000021"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:04:40.701528" elapsed="0.406218">'6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.128060" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.127744" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.127721" elapsed="0.000436"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.128572" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:04:42.128688" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:04:42.128409" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.129273" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:42.128862" elapsed="0.000460"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.129890" level="INFO">${conn_id} = 158</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:04:42.129471" elapsed="0.000446"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.130822" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:04:42.130899" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:04:42.130536" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:42.131091" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.132265" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:04:42.497840" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:03:58 UTC 2026

  System load:  0.11               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:40 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:04:42.131946" elapsed="0.366078"/>
</kw>
<msg time="2026-04-28T03:04:42.498112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:42.131582" elapsed="0.366618"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:04:42.130144" elapsed="0.368177"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.498824" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:04:42.521733" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:04:42.521903" level="INFO">${stdout} = 6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:04:42.521995" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:04:42.498561" elapsed="0.023470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:04:42.522257" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.523313" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:42.522859" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.523696" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:42.523495" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.523458" elapsed="0.000342"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:04:42.524048" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:04:42.523874" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.523853" elapsed="0.000311"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.524211" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:42.529119" elapsed="0.000209"/>
</kw>
<msg time="2026-04-28T03:04:42.529391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:42.528147" elapsed="0.001351"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.529714" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.529974" elapsed="0.000032"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:42.524646" elapsed="0.005470"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:04:42.127199" elapsed="0.403278"/>
</kw>
<msg time="2026-04-28T03:04:42.530686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:42.126368" elapsed="0.404439"/>
</kw>
<msg time="2026-04-28T03:04:42.531101" level="INFO">${output} = 6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:04:42.125821" elapsed="0.405343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.532144" level="INFO">6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:42.531528" elapsed="0.000722"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:42.532891" elapsed="0.000860"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:42.532405" elapsed="0.001440"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.532364" elapsed="0.001536"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.534543" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.534062" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.534023" elapsed="0.000661"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:04:42.534715" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:42.534866" level="INFO">${output} = 6cf68c29-d0a4-44fa-84b3-60f62da21952
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:04:42.125269" elapsed="0.409623"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:04:42.534960" elapsed="0.000028"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:04:42.109176" elapsed="0.425906"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:04:40.700982" elapsed="1.834146"/>
</kw>
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:40.569505" elapsed="1.965740"/>
</test>
<test id="s1-s4-t3" name="Get Operational Topology" line="37">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:42.538883" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:42.538627" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.540140" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:42.540029" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.540010" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.544678" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:42.544568" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.544551" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.545754" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:42.545341" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.546241" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:42.545944" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:42.546310" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:42.546462" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:42.544976" elapsed="0.001510"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.553733" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:42.553613" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.553593" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.555007" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:42.554869" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.554851" elapsed="0.000272"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:42.555569" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:42.555262" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.555992" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:42.555750" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.588604" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:42.556506" elapsed="0.032211"/>
</kw>
<msg time="2026-04-28T03:04:42.588883" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:42.588928" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:42.556173" elapsed="0.032815"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:42.624970" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:42.589516" elapsed="0.035570"/>
</kw>
<msg time="2026-04-28T03:04:42.625248" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:42.625292" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:42.589154" elapsed="0.036175"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.625678" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.625411" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.625390" elapsed="0.000395"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.626249" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:42.625926" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.626595" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.626388" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.626371" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:42.626709" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:42.629320" elapsed="0.000199"/>
</kw>
<msg time="2026-04-28T03:04:42.629581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:42.628159" elapsed="0.001560"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.630065" elapsed="0.000088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.630409" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:42.627533" elapsed="0.003063"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:42.627001" elapsed="0.003680"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:42.554567" elapsed="0.076212"/>
</kw>
<msg time="2026-04-28T03:04:42.630874" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:42.630918" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:42.553965" elapsed="0.077006"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:42.631159" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:42.631051" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.631032" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.631787" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.632197" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:42.632269" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:42.553239" elapsed="0.079139"/>
</kw>
<msg time="2026-04-28T03:04:42.632474" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:42.632517" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:42.546850" elapsed="0.085705"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.632879" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.632632" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.632615" elapsed="0.000362"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:42.546717" elapsed="0.086284"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:42.546542" elapsed="0.086491"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:42.544216" elapsed="0.088873"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:42.539724" elapsed="0.093421"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:42.539302" elapsed="0.093887"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:42.536286" elapsed="0.096956"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:42.648203" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:42.648425" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:42.648551" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:42.641268" elapsed="0.007309"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.655553" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:42.654538" elapsed="0.001055"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:42.651893" elapsed="0.003755"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.655885" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.655685" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.651868" elapsed="0.004197"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.656607" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:42.656256" elapsed="0.000462"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:42.656779" elapsed="0.000043"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:42.648991" elapsed="0.007986"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:42.648662" elapsed="0.008359"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:42.657250" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:42.657055" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:42.648643" elapsed="0.008707"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:42.657564" elapsed="0.000234"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:42.661719" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:42.658284" elapsed="0.003561">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:04:42.658077" elapsed="0.003876">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:42.657876" elapsed="0.004155">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:42.640806" elapsed="0.021341">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:44.680659" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:44.681011" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:44.681182" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:44.673380" elapsed="0.007842"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:44.691650" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:44.690067" elapsed="0.001651"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:44.686005" elapsed="0.005802"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:44.692201" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:44.691867" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:44.685963" elapsed="0.006411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:44.693095" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:44.692694" elapsed="0.000590"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:44.693354" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:44.681878" elapsed="0.011675"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:44.681365" elapsed="0.012237"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:44.693850" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:44.693641" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:44.681331" elapsed="0.012649"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:44.694181" elapsed="0.000246"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:44.698490" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:44.694958" elapsed="0.003663">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:04:44.694708" elapsed="0.004041">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:44.694514" elapsed="0.004386">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:44.672708" elapsed="0.026397">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:46.720248" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:46.720476" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:46.720659" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:46.711584" elapsed="0.009103"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:46.727145" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:46.726066" elapsed="0.001121"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:46.723519" elapsed="0.003726"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:46.727502" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:46.727282" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:46.723460" elapsed="0.004153"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:46.728184" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:46.727799" elapsed="0.000499"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:46.728362" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:46.721172" elapsed="0.007378"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:46.720793" elapsed="0.007800"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:46.728822" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:46.728628" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:46.720767" elapsed="0.008161"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:46.729137" elapsed="0.000236"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:46.733508" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:46.729850" elapsed="0.003847">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:04:46.729640" elapsed="0.004181">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:46.729457" elapsed="0.004467">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:46.710801" elapsed="0.023308">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:48.757824" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:48.758070" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:48.758194" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:48.751802" elapsed="0.006420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:48.764050" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:48.762949" elapsed="0.001143"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:48.760997" elapsed="0.003153"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:48.764391" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:48.764188" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:48.760978" elapsed="0.003521"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:48.765067" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:48.764684" elapsed="0.000586"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:48.765336" elapsed="0.000055"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:48.758707" elapsed="0.006825"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:48.758322" elapsed="0.007254"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:48.765804" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:48.765610" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:48.758298" elapsed="0.007609"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:48.766112" elapsed="0.000238"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:48.770245" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:48.766867" elapsed="0.003505">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:04:48.766650" elapsed="0.003857">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:48.766433" elapsed="0.004219">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:48.751229" elapsed="0.019589">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:50.791352" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:50.791571" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:50.791738" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:50.783977" elapsed="0.007789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.797398" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:50.796628" elapsed="0.000800"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:50.794752" elapsed="0.002717"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.797670" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:50.797497" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.794734" elapsed="0.003016"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.798285" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:50.797888" elapsed="0.000509"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:50.798460" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:50.792237" elapsed="0.006409"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:50.791864" elapsed="0.006825"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.798919" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:50.798722" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.791840" elapsed="0.007204"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:50.799226" elapsed="0.000231"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.803292" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:50.799922" elapsed="0.003540">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:04:50.799716" elapsed="0.003867">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:50.799535" elapsed="0.004153">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:50.783243" elapsed="0.020607">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<msg time="2026-04-28T03:04:50.804068" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:04:42.633399" elapsed="8.170836">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:04:42.535626" elapsed="8.268851">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</test>
<test id="s1-s4-t4" name="Create a Bridge" line="47">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:50.810005" elapsed="0.000214"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:50.809659" elapsed="0.000615"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.811257" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.811146" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.811126" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.815792" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.815688" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.815670" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.816867" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:50.816488" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.817357" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:50.817065" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:50.817426" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:04:50.817607" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:50.816123" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.822982" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.822856" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.822831" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.824206" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.824101" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.824083" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:50.824706" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.824408" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:50.825124" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:50.824881" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:50.855609" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:50.825638" elapsed="0.030130"/>
</kw>
<msg time="2026-04-28T03:04:50.856020" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:50.856068" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.825300" elapsed="0.030802"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:50.888797" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:50.856702" elapsed="0.032203"/>
</kw>
<msg time="2026-04-28T03:04:50.889084" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:50.889130" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.856302" elapsed="0.032862"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.889517" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:50.889259" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.889233" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.890082" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:50.889735" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.890426" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:50.890221" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.890203" elapsed="0.000363"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:50.890602" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:50.893315" elapsed="0.000203"/>
</kw>
<msg time="2026-04-28T03:04:50.893586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:50.892101" elapsed="0.001620"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.894018" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.894344" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:50.891446" elapsed="0.003082"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:50.890889" elapsed="0.003705"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:50.823779" elapsed="0.070915"/>
</kw>
<msg time="2026-04-28T03:04:50.894789" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:50.894833" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.823192" elapsed="0.071678"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:50.895079" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:50.894970" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.894930" elapsed="0.000419"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.895748" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.896131" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.896207" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:50.822487" elapsed="0.073830"/>
</kw>
<msg time="2026-04-28T03:04:50.896411" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:50.896455" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.817998" elapsed="0.078493"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.896808" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:50.896566" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.896550" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:50.817852" elapsed="0.079058"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:50.817684" elapsed="0.079275"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:50.815336" elapsed="0.081680"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:50.810836" elapsed="0.086236"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.810417" elapsed="0.086701"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:50.806251" elapsed="0.090923"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:50.898168" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:50.898332" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:50.898002" elapsed="0.000356"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:50.898753" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.898503" elapsed="0.000315"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:50.899307" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.899064" elapsed="0.000270"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:50.899926" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.899483" elapsed="0.000486"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:50.900351" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_br",
            "ovsdb:bridge-name": "ovsconf_br",
            "ovsdb:protocol-entry": [
 ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.900122" elapsed="0.000256"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:50.900750" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_br",
            "ovsdb:bridge-name": "ovsconf_br",
            "ovsdb:protocol-entry": [
 ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.900526" elapsed="0.000251"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:50.901166" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_br",
            "ovsdb:bridge-name": "ovsconf_br",
            "ovsdb:protocol-entry": [
 ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.900923" elapsed="0.000270"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.901738" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:50.901344" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.902290" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:50.901914" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.902709" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:50.902462" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.903178" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_br",
            "ovsdb:bridge-name": "ovsconf_br",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000040"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:50.902896" elapsed="0.000332"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:50.914218" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '857', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_br",
            "ovsdb:bridge-name": "ovsconf_br",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000040"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:50.914343" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:50.914540" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:50.903369" elapsed="0.011229"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:50.923137" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:50.920331" elapsed="0.002906"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.925338" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:50.923407" elapsed="0.001959"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:50.923266" elapsed="0.002136"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.920288" elapsed="0.005136"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.925830" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:50.925580" elapsed="0.000294"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:50.925917" elapsed="0.000046"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:50.915246" elapsed="0.010816"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:50.926201" elapsed="0.002340"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE}</arg>
<arg>0000000000000040</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:04:50.897444" elapsed="0.031159"/>
</kw>
<doc>This will create bridge on the specified OVSDB node.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:50.805283" elapsed="0.123437"/>
</test>
<test id="s1-s4-t5" name="Get Config Topology with Bridge" line="55">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:50.931876" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:50.931625" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.933125" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.933014" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.932995" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.938082" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.937973" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.937955" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.939183" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:50.938760" elapsed="0.000451"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:50.939652" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:50.939361" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:50.939721" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:50.939872" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:50.938364" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.945044" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.944918" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.944900" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:50.946267" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:50.946162" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:50.946145" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:50.946762" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:50.946465" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:50.947178" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:50.946951" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:50.980537" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:50.947675" elapsed="0.032978"/>
</kw>
<msg time="2026-04-28T03:04:50.980819" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:50.980865" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.947353" elapsed="0.033546"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:51.046797" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:50.981455" elapsed="0.065720"/>
</kw>
<msg time="2026-04-28T03:04:51.047563" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:51.047667" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.981104" elapsed="0.066641"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.048461" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.047919" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.047876" elapsed="0.000758"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.049667" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:51.048926" elapsed="0.000902"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.050152" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.049927" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.049907" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:51.050262" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:51.052736" elapsed="0.000155"/>
</kw>
<msg time="2026-04-28T03:04:51.052976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:51.051688" elapsed="0.001419"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.053368" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.053880" elapsed="0.000097"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:51.051083" elapsed="0.003005"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:51.050531" elapsed="0.003622"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:50.945835" elapsed="0.108416"/>
</kw>
<msg time="2026-04-28T03:04:51.054343" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:51.054386" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.945254" elapsed="0.109167"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:51.054605" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:51.054498" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.054480" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.055091" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.055433" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:51.055507" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:50.944582" elapsed="0.111034"/>
</kw>
<msg time="2026-04-28T03:04:51.055709" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:51.055752" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.940280" elapsed="0.115508"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.056134" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.055862" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.055845" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:50.940149" elapsed="0.116087"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:50.939974" elapsed="0.116294"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:50.937598" elapsed="0.118726"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:50.932711" elapsed="0.123708"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:50.932296" elapsed="0.124170"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:50.929649" elapsed="0.126876"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:51.069717" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:51.071302" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1114'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb://10.30.170.161:6634/bridge/ovsconf_br","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovsconf_br","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000040"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:04:51.071532" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:51.056707" elapsed="0.014881"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.080222" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:51.079550" elapsed="0.000701"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:51.077353" elapsed="0.002938"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.080455" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.080317" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.077312" elapsed="0.003219"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.080909" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_br",
                        "ovsdb:bridge-name": "ovsconf_br",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000040"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:51.080663" elapsed="0.000328"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:51.081034" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:51.072204" elapsed="0.008954"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${BRIDGE}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:51.081297" elapsed="0.002280"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:50.929019" elapsed="0.154670"/>
</test>
<test id="s1-s4-t6" name="Get Operational Topology with Bridge" line="61">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:51.086907" elapsed="0.000224"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:51.086651" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:51.088172" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:51.088061" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.088041" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:51.093013" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:51.092891" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.092874" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.094070" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:51.093675" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.094542" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:51.094248" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:51.094612" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:04:51.094766" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:51.093296" elapsed="0.001494"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:51.099982" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:51.099849" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.099824" elapsed="0.000235"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:51.101334" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:51.101225" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.101207" elapsed="0.000253"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:51.101978" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:51.101601" elapsed="0.000406"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:51.102386" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:51.102160" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:51.132554" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:51.102882" elapsed="0.029796"/>
</kw>
<msg time="2026-04-28T03:04:51.132850" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:51.132899" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:51.102561" elapsed="0.030408"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:51.192493" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:51.133582" elapsed="0.059164"/>
</kw>
<msg time="2026-04-28T03:04:51.193000" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:51.193048" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:51.133150" elapsed="0.059934"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.193536" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.193198" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.193167" elapsed="0.000453"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.194153" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:51.193754" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.194497" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.194293" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.194276" elapsed="0.000369"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:51.194682" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:51.197290" elapsed="0.000372"/>
</kw>
<msg time="2026-04-28T03:04:51.197726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:51.196186" elapsed="0.001671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.198143" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.198462" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:51.195548" elapsed="0.003095"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:51.194993" elapsed="0.003715"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:51.100870" elapsed="0.097936"/>
</kw>
<msg time="2026-04-28T03:04:51.198899" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:51.198963" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:51.100216" elapsed="0.098784"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:51.199184" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:51.199077" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.199059" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.199663" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.200010" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:51.200082" elapsed="0.000014"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:51.099448" elapsed="0.100739"/>
</kw>
<msg time="2026-04-28T03:04:51.200280" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:51.200325" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:51.095170" elapsed="0.105190"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.200672" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.200433" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.200417" elapsed="0.000330"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:51.095037" elapsed="0.105733"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:51.094846" elapsed="0.105955"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:51.092531" elapsed="0.108326"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:51.087755" elapsed="0.113159"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:51.087326" elapsed="0.113666"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:51.084531" elapsed="0.116516"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.201525" level="INFO">@{list} = [ ovsconf_br ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:51.201201" elapsed="0.000350"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:51.216361" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:51.216633" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:51.216747" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:51.209492" elapsed="0.007281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.224538" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:51.223464" elapsed="0.001117"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:51.220664" elapsed="0.003976"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.224887" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.224679" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.220637" elapsed="0.004388"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.225627" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:51.225219" elapsed="0.000569"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:51.225853" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:51.217343" elapsed="0.008666"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:51.216856" elapsed="0.009185"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:51.226200" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:51.226065" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:51.216836" elapsed="0.009435"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:51.226400" elapsed="0.000167"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:51.229515" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:51.226904" elapsed="0.002704">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:04:51.226755" elapsed="0.002940">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:51.226624" elapsed="0.003198">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:51.209017" elapsed="0.020960">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:53.254091" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:53.254453" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:53.254704" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:53.243695" elapsed="0.011048"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:53.263006" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:53.261837" elapsed="0.001215"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:53.258985" elapsed="0.004128"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:53.263362" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:53.263152" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:53.258956" elapsed="0.004519"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:53.264066" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:53.263671" elapsed="0.000516"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:53.264255" elapsed="0.000052"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:53.255433" elapsed="0.009033"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:53.254884" elapsed="0.009629"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:53.264750" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:53.264548" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:53.254850" elapsed="0.010005"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:53.265072" elapsed="0.000248"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:53.269432" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:53.265822" elapsed="0.003805">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:04:53.265599" elapsed="0.004157">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:53.265405" elapsed="0.004459">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:53.243139" elapsed="0.026922">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:55.291245" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:55.291577" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:55.291744" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:55.283520" elapsed="0.008260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:55.301482" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:55.300678" elapsed="0.000834"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:55.298240" elapsed="0.003314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:55.301724" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:55.301582" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:55.298213" elapsed="0.003589"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:55.302214" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:55.301947" elapsed="0.000430"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:55.302426" elapsed="0.000039"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:55.292440" elapsed="0.010127"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:55.291918" elapsed="0.010681"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:55.302761" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:55.302623" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:55.291885" elapsed="0.010950"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:55.302984" elapsed="0.000172"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:55.305929" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:55.303531" elapsed="0.002508">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:04:55.303351" elapsed="0.002777">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:55.303216" elapsed="0.003015">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:55.282873" elapsed="0.023477">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:57.331611" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:57.331825" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:57.332020" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:57.323697" elapsed="0.008351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:57.338529" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:57.337434" elapsed="0.001136"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:57.334854" elapsed="0.003772"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:57.338863" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:57.338664" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:57.334836" elapsed="0.004158"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:57.339552" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:57.339185" elapsed="0.000481"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:57.339734" elapsed="0.000053"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:57.332528" elapsed="0.007397"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:57.332155" elapsed="0.007836"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:57.340221" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:57.340027" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:57.332126" elapsed="0.008198"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:57.340508" elapsed="0.000240"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:57.344543" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:57.341314" elapsed="0.003387">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:04:57.341081" elapsed="0.003709">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:57.340832" elapsed="0.004032">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:57.322993" elapsed="0.022009">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:59.368071" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:59.368497" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:59.368749" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:59.359107" elapsed="0.009699"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.379445" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:59.378651" elapsed="0.000823"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:59.374844" elapsed="0.004670"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.379684" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.379542" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.374806" elapsed="0.004954"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.380163" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:59.379893" elapsed="0.000419"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:59.380358" elapsed="0.000036"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:59.369768" elapsed="0.010725"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:59.369027" elapsed="0.011497"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.380685" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.380548" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.368979" elapsed="0.011778"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:59.380887" elapsed="0.000185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.384009" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:59.381443" elapsed="0.002659">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:04:59.381264" elapsed="0.002924">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:59.381131" elapsed="0.003159">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:59.358358" elapsed="0.026050">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<msg time="2026-04-28T03:04:59.384520" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:04:51.201705" elapsed="8.182934">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:04:51.083895" elapsed="8.300948">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</test>
<test id="s1-s4-t7" name="Create Port and Attach to a Bridge" line="72">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:59.388320" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:59.388066" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.389601" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.389487" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.389468" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.394189" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.394084" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.394066" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.395241" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:59.394844" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.395715" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:59.395419" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:59.395785" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:04:59.395954" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:59.394471" elapsed="0.001509"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.401029" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.400908" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.400890" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.402278" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.402171" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.402151" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:59.402771" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:59.402475" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:59.403203" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:59.402974" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:59.435553" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:59.403699" elapsed="0.031992"/>
</kw>
<msg time="2026-04-28T03:04:59.435868" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:59.435914" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.403378" elapsed="0.032739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:59.482010" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "a "n "d "[C "A "t "t "a "c "h "[C "t "o "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:59.436654" elapsed="0.045524"/>
</kw>
<msg time="2026-04-28T03:04:59.482541" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:59.482588" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.436308" elapsed="0.046317"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.482978" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.482716" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.482693" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.483515" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "a "n "d "[C "A "t "t "a "c "h "[C "t "o "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:59.483197" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.483872" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.483668" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.483651" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:59.484000" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:59.486611" elapsed="0.000158"/>
</kw>
<msg time="2026-04-28T03:04:59.486831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:59.485467" elapsed="0.001515"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.487253" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.487570" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:59.484797" elapsed="0.002959"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:59.484275" elapsed="0.003544"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:59.401846" elapsed="0.086069"/>
</kw>
<msg time="2026-04-28T03:04:59.488028" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:59.488071" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.401235" elapsed="0.086873"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:59.488288" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:59.488183" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.488166" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.488761" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.489102" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.489172" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:59.400576" elapsed="0.088702"/>
</kw>
<msg time="2026-04-28T03:04:59.489388" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:59.489432" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.396341" elapsed="0.093128"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.489840" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.489543" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.489526" elapsed="0.000393"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:59.396209" elapsed="0.093747"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:59.396033" elapsed="0.093954"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:59.393704" elapsed="0.096338"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:59.389169" elapsed="0.100925"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.388729" elapsed="0.101408"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:59.385897" elapsed="0.104297"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:04:59.497877" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:04:59.498076" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:04:59.497717" elapsed="0.000385"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:59.498498" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:59.498248" elapsed="0.000277"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:04:59.498898" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:04:59.498671" elapsed="0.000253"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.499440" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:59.499088" elapsed="0.000379"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.499975" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:04:59.499613" elapsed="0.000389"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:59.513032" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br/termination-point=ovsconf_vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br/termination-point=ovsconf_vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '394', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "ovsconf_vx1",
            "tp-id": "ovsconf_vx1"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:04:59.513104" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br/termination-point=ovsconf_vx1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:59.513244" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:59.500146" elapsed="0.013134"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:04:59.513537" elapsed="0.003491"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT}</arg>
<arg>10.0.0.10</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:04:59.497222" elapsed="0.019895"/>
</kw>
<doc>This request will creates port/interface and attach it to the specific bridge</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:04:59.385301" elapsed="0.131968"/>
</test>
<test id="s1-s4-t8" name="Get Operational Topology with Port" line="76">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:04:59.521717" elapsed="0.000312"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:04:59.521340" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.523535" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.523335" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.523308" elapsed="0.000327"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.529975" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.529808" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.529783" elapsed="0.000287"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.531086" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:04:59.530683" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.531569" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:59.531263" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:04:59.531645" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:04:59.531801" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:04:59.530316" elapsed="0.001510"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.536982" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.536842" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.536819" elapsed="0.000231"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.538199" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:04:59.538093" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.538076" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:04:59.538690" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:04:59.538398" elapsed="0.000317"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:04:59.539098" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:59.538861" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:04:59.574226" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:04:59.539742" elapsed="0.034664"/>
</kw>
<msg time="2026-04-28T03:04:59.574606" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:04:59.574654" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.539271" elapsed="0.035420"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:04:59.620130" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:04:59.575300" elapsed="0.044948"/>
</kw>
<msg time="2026-04-28T03:04:59.620413" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:04:59.620460" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.574884" elapsed="0.045612"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.620820" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.620586" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.620562" elapsed="0.000341"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.621406" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:59.621064" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.621754" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.621548" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.621530" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:04:59.621862" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:04:59.624517" elapsed="0.000159"/>
</kw>
<msg time="2026-04-28T03:04:59.624738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:04:59.623445" elapsed="0.001435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.625202" elapsed="0.000083"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.625563" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:04:59.622806" elapsed="0.002948"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:04:59.622164" elapsed="0.003657"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:04:59.537767" elapsed="0.088155"/>
</kw>
<msg time="2026-04-28T03:04:59.626043" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:59.626087" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.537191" elapsed="0.088933"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:04:59.626312" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:04:59.626202" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.626184" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.626790" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.627147" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:04:59.627220" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:04:59.536502" elapsed="0.090828"/>
</kw>
<msg time="2026-04-28T03:04:59.627426" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:04:59.627471" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.532202" elapsed="0.095304"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.627822" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.627581" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.627565" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:04:59.532068" elapsed="0.095853"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:04:59.531880" elapsed="0.096103"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:04:59.529280" elapsed="0.098765"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:04:59.522914" elapsed="0.105188"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:04:59.522298" elapsed="0.105850"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:04:59.518557" elapsed="0.109648"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.628732" level="INFO">@{list} = [ ovsconf_br | ovsconf_vx1 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:04:59.628357" elapsed="0.000402"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:04:59.646581" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:04:59.646808" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:04:59.646978" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:04:59.636635" elapsed="0.010372"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.654844" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:04:59.653788" elapsed="0.001098"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:59.651089" elapsed="0.003881"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.655209" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.655009" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.651062" elapsed="0.004254"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.655862" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:04:59.655500" elapsed="0.000498"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:04:59.656061" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:04:59.647487" elapsed="0.008752"/>
</kw>
<status status="PASS" start="2026-04-28T03:04:59.647086" elapsed="0.009198"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:04:59.656516" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:04:59.656318" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:04:59.647067" elapsed="0.009561"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:04:59.656813" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:04:59.660186" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:04:59.657633" elapsed="0.002689">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:04:59.657419" elapsed="0.002992">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:04:59.657150" elapsed="0.003335">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:04:59.636192" elapsed="0.024408">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:01.681270" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:01.681509" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:01.681633" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:01.673557" elapsed="0.008102"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:01.688078" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:01.686990" elapsed="0.001129"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:01.684592" elapsed="0.003585"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:01.688430" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:01.688215" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:01.684573" elapsed="0.003964"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:01.689099" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:01.688724" elapsed="0.000587"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:01.689379" elapsed="0.000054"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:01.682140" elapsed="0.007441"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:01.681768" elapsed="0.007859"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:01.689864" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:01.689662" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:01.681742" elapsed="0.008250"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:01.690186" elapsed="0.000245"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:01.694813" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:01.690952" elapsed="0.004012">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:05:01.690714" elapsed="0.004380">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:01.690517" elapsed="0.004726">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:01.672859" elapsed="0.022559">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:03.718436" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:03.718700" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:03.718878" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:03.707965" elapsed="0.010940"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:03.730064" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:03.728201" elapsed="0.001929"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:03.723555" elapsed="0.006666"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:03.730593" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:03.730281" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:03.723512" elapsed="0.007252"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:03.731801" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:03.731083" elapsed="0.000943"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:03.732132" elapsed="0.000077"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:03.719432" elapsed="0.012952"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:03.719029" elapsed="0.013387"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:03.732578" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:03.732440" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:03.719003" elapsed="0.013646"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:03.732781" elapsed="0.000204"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:03.735857" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:03.733434" elapsed="0.002569">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:05:03.733273" elapsed="0.002821">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:03.733132" elapsed="0.003037">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:03.707191" elapsed="0.029095">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:05.761505" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:05.761796" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:05.761987" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:05.752346" elapsed="0.009679"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:05.769891" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:05.768821" elapsed="0.001131"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:05.766128" elapsed="0.003885"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:05.770252" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:05.770051" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:05.766102" elapsed="0.004288"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:05.770959" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:05.770582" elapsed="0.000557"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:05.771203" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:05.762638" elapsed="0.008756"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:05.762156" elapsed="0.009284"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:05.771667" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:05.771475" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:05.762124" elapsed="0.009645"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:05.771971" elapsed="0.000237"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:05.776077" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:05.772677" elapsed="0.003524">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:05:05.772474" elapsed="0.003846">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:05.772287" elapsed="0.004179">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:05.751770" elapsed="0.024861">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:07.797788" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:07.798035" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:07.798211" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:07.789766" elapsed="0.008473"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.804059" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:07.802990" elapsed="0.001111"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:07.800952" elapsed="0.003206"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.804394" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:07.804195" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.800920" elapsed="0.003598"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.805109" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:07.804724" elapsed="0.000499"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:07.805285" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:07.798697" elapsed="0.006794"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:07.798342" elapsed="0.007194"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.805763" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:07.805570" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.798317" elapsed="0.007551"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:07.806072" elapsed="0.000239"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.810494" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:07.806812" elapsed="0.003861">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="FAIL" start="2026-04-28T03:05:07.806606" elapsed="0.004190">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:07.806391" elapsed="0.004508">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:07.788927" elapsed="0.022155">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<msg time="2026-04-28T03:05:07.811269" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:04:59.628928" elapsed="8.182507">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:04:59.517698" elapsed="8.293984">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsconf_br'</status>
</test>
<test id="s1-s4-t9" name="Delete the Port" line="87">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:07.815618" elapsed="0.000213"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:07.815335" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.816872" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.816762" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.816743" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.821501" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.821371" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.821354" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.822574" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:07.822184" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.823221" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:07.822790" elapsed="0.000462"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:07.823300" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:05:07.823463" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:07.821792" elapsed="0.001703"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.828807" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.828699" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.828680" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.830081" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.829973" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.829955" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:07.830576" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:07.830281" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:07.831009" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:07.830752" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:07.866457" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:07.831514" elapsed="0.035068"/>
</kw>
<msg time="2026-04-28T03:05:07.866765" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:07.866812" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.831185" elapsed="0.035661"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:07.906744" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:07.867418" elapsed="0.039579"/>
</kw>
<msg time="2026-04-28T03:05:07.907249" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:07.907300" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.867057" elapsed="0.040279"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.907766" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:07.907457" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.907421" elapsed="0.000432"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.908384" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:07.908008" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.908735" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:07.908523" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.908505" elapsed="0.000380"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:07.908922" elapsed="0.000054"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:07.911683" elapsed="0.000167"/>
</kw>
<msg time="2026-04-28T03:05:07.911911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:07.910505" elapsed="0.001558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.912325" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.912644" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:07.909837" elapsed="0.002992"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:07.909239" elapsed="0.003655"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:07.829652" elapsed="0.083358"/>
</kw>
<msg time="2026-04-28T03:05:07.913107" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:07.913150" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.829033" elapsed="0.084152"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:07.913388" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:07.913262" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.913244" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.913880" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.914253" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.914326" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:07.828349" elapsed="0.086088"/>
</kw>
<msg time="2026-04-28T03:05:07.914533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:07.914577" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.823862" elapsed="0.090751"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:07.914959" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:07.914688" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.914672" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:07.823726" elapsed="0.091336"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:07.823551" elapsed="0.091545"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:07.821004" elapsed="0.094149"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:07.816469" elapsed="0.098744"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.816047" elapsed="0.099214"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:07.812719" elapsed="0.102598"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:07.930034" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br/termination-point=ovsconf_vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br/termination-point=ovsconf_vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:07.930093" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br/termination-point=ovsconf_vx1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:07.915476" elapsed="0.014683"/>
</kw>
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:07.812026" elapsed="0.118333"/>
</test>
<test id="s1-s4-t10" name="Get Operational Topology after Deletion of Port" line="94">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:07.934034" elapsed="0.000242"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:07.933761" elapsed="0.000571"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.936595" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.936320" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.936273" elapsed="0.000486"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.944881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.944765" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.944748" elapsed="0.000218"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.945993" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:07.945583" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:07.946470" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:07.946173" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:07.946539" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:05:07.946697" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:07.945188" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.951805" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.951692" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.951674" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:07.953048" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:07.952908" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:07.952890" elapsed="0.000225"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:07.953579" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:07.953251" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:07.954013" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:07.953764" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:07.989297" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:07.954512" elapsed="0.035021"/>
</kw>
<msg time="2026-04-28T03:05:07.989755" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:07.989802" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.954189" elapsed="0.035648"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.044813" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "f "[C "P "[78Co "[A[78Cr
 "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:07.990536" elapsed="0.054493"/>
</kw>
<msg time="2026-04-28T03:05:08.045230" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:08.045289" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.990100" elapsed="0.055228"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.045728" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.045435" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.045405" elapsed="0.000407"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.046340" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "f "[C "P "[78Co "[A[78Cr
 "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.045972" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.046784" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.046576" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.046559" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:08.046895" elapsed="0.000055"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.049598" elapsed="0.000187"/>
</kw>
<msg time="2026-04-28T03:05:08.049852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:08.048447" elapsed="0.001556"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.050273" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.050591" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:08.047795" elapsed="0.002979"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:08.047218" elapsed="0.003621"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:07.952603" elapsed="0.098357"/>
</kw>
<msg time="2026-04-28T03:05:08.051059" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.051102" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.952031" elapsed="0.099110"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:08.051346" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:05:08.051230" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.051208" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.051826" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.052174" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.052244" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:07.951352" elapsed="0.100999"/>
</kw>
<msg time="2026-04-28T03:05:08.052445" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.052488" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.947111" elapsed="0.105414"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.052840" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.052599" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.052582" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:07.946974" elapsed="0.105980"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:07.946779" elapsed="0.106211"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:07.944392" elapsed="0.108657"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:07.935588" elapsed="0.117518"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:07.934536" elapsed="0.118614"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:07.931358" elapsed="0.121846"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.053689" level="INFO">@{list} = [ ovsconf_vx1 ]</msg>
<var>@{list}</var>
<arg>${PORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:08.053373" elapsed="0.000341"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:08.074457" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:08.074827" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:08.075042" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:08.065387" elapsed="0.009694"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.083289" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:08.082156" elapsed="0.001176"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.079295" elapsed="0.004097"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.083641" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.083432" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.079269" elapsed="0.004484"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.084344" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.083969" elapsed="0.000584"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:08.084620" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:08.075658" elapsed="0.009160"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.075205" elapsed="0.009659"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.085129" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.084900" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.075175" elapsed="0.010062"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:05:08.085605" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.085558" elapsed="0.000099"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:05:08.085538" elapsed="0.000148"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:05:08.085361" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.085337" elapsed="0.000406"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:08.085927" elapsed="0.000262"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:08.086670" elapsed="0.002374"/>
</kw>
<var name="${i}">ovsconf_vx1</var>
<status status="PASS" start="2026-04-28T03:05:08.086503" elapsed="0.002582"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:05:08.086285" elapsed="0.002845"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:05:08.064893" elapsed="0.024295"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:05:08.053870" elapsed="0.035372"/>
</kw>
<doc>This request will fetch the operational topology after the Port is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:07.930693" elapsed="0.158694"/>
</test>
<test id="s1-s4-t11" name="Delete the Bridge" line="105">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:08.092703" elapsed="0.000260"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:08.092406" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.094127" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.094010" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.093990" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.098865" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.098758" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.098740" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.099919" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:08.099539" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.100410" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:08.100115" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:08.100484" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:08.100635" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:08.099173" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.106005" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.105877" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.105858" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.107232" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.107125" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.107108" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:08.107737" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:08.107434" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.108161" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.107912" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.140419" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:08.108663" elapsed="0.031950"/>
</kw>
<msg time="2026-04-28T03:05:08.140806" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:08.140855" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.108338" elapsed="0.032555"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.174147" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:08.141518" elapsed="0.032735"/>
</kw>
<msg time="2026-04-28T03:05:08.174411" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:08.174457" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.141109" elapsed="0.033384"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.174809" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.174581" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.174558" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.175351" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.175050" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.175692" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.175488" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.175471" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:08.175801" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.178506" elapsed="0.000162"/>
</kw>
<msg time="2026-04-28T03:05:08.178729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:08.177435" elapsed="0.001427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.179141" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.179461" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:08.176631" elapsed="0.003013"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:08.176101" elapsed="0.003607"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:08.106801" elapsed="0.073006"/>
</kw>
<msg time="2026-04-28T03:05:08.179900" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.179967" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.106214" elapsed="0.073794"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:08.180193" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:08.180086" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.180068" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.180672" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.181027" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.181100" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:08.105539" elapsed="0.075681"/>
</kw>
<msg time="2026-04-28T03:05:08.181316" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.181359" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.101059" elapsed="0.080377"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.181754" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.181514" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.181497" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:08.100882" elapsed="0.080971"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:08.100711" elapsed="0.081174"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:08.098253" elapsed="0.083703"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:08.093697" elapsed="0.088318"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.093221" elapsed="0.088839"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:08.090316" elapsed="0.091796"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:08.193109" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:08.193174" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_br 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:08.182264" elapsed="0.011010"/>
</kw>
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:08.089755" elapsed="0.103679"/>
</test>
<test id="s1-s4-t12" name="Get Operational Topology after Deletion of Bridge" line="112">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:08.198203" elapsed="0.000300"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:08.197826" elapsed="0.000754"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.200049" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.199870" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.199845" elapsed="0.000300"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.206315" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.206207" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.206190" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.207362" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:08.206980" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.207840" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:08.207545" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:08.207909" elapsed="0.000043"/>
</return>
<msg time="2026-04-28T03:05:08.208079" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:08.206597" elapsed="0.001506"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.213371" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.213263" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.213245" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.214553" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.214447" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.214430" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:08.215070" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:08.214751" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.215512" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.215285" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.246234" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:08.216034" elapsed="0.030293"/>
</kw>
<msg time="2026-04-28T03:05:08.246503" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:08.246548" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.215688" elapsed="0.030895"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.303105" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "f "[C "B "[78Cr "[A[78Ci
 "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:08.247094" elapsed="0.056125"/>
</kw>
<msg time="2026-04-28T03:05:08.303380" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:08.303424" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.246743" elapsed="0.056717"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.303753" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.303538" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.303519" elapsed="0.000313"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.304285" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "f "[C "B "[78Cr "[A[78Ci
 "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.303985" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.304635" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.304429" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.304412" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:08.304748" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.307212" elapsed="0.000156"/>
</kw>
<msg time="2026-04-28T03:05:08.307427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:08.306182" elapsed="0.001373"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.307815" elapsed="0.000072"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.308148" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:08.305565" elapsed="0.002761"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:08.305021" elapsed="0.003368"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:08.214149" elapsed="0.094336"/>
</kw>
<msg time="2026-04-28T03:05:08.308575" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.308618" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.213584" elapsed="0.095070"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:08.308837" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:08.308728" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.308711" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.309462" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.309791" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.309901" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:08.212896" elapsed="0.097135"/>
</kw>
<msg time="2026-04-28T03:05:08.310129" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.310171" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.208476" elapsed="0.101732"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.310525" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.310282" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.310265" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:08.208329" elapsed="0.102297"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:08.208156" elapsed="0.102499"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:08.205820" elapsed="0.104891"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:08.199468" elapsed="0.111297"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.198816" elapsed="0.111993"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:08.194597" elapsed="0.116262"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.311378" level="INFO">@{list} = [ ovsconf_br | ovsconf_vx1 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:08.311018" elapsed="0.000386"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:08.333112" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:08.333416" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:08.333581" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:08.323091" elapsed="0.010526"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.341371" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:08.340308" elapsed="0.001104"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.337609" elapsed="0.003861"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.341708" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.341507" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.337583" elapsed="0.004279"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.342426" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.342071" elapsed="0.000468"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:08.342601" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:08.334169" elapsed="0.008606"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.333726" elapsed="0.009091"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.343066" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.342851" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.333700" elapsed="0.009470"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:05:08.343480" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.343431" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:05:08.343410" elapsed="0.000152"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:05:08.343248" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.343226" elapsed="0.000394"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:08.343806" elapsed="0.000255"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:08.344515" elapsed="0.003322"/>
</kw>
<var name="${i}">ovsconf_br</var>
<status status="PASS" start="2026-04-28T03:05:08.344314" elapsed="0.003581"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:08.348231" elapsed="0.003373"/>
</kw>
<var name="${i}">ovsconf_vx1</var>
<status status="PASS" start="2026-04-28T03:05:08.348031" elapsed="0.003631"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:05:08.344137" elapsed="0.007567"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:05:08.322623" elapsed="0.029156"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:05:08.311559" elapsed="0.040338"/>
</kw>
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:08.193778" elapsed="0.158301"/>
</test>
<test id="s1-s4-t13" name="Verify Config Still Has OVS Info" line="123">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:08.355671" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:08.355416" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.356895" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.356786" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.356767" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.361549" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.361443" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.361426" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.362600" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:08.362211" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.363086" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:08.362776" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:08.363155" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:08.363306" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:08.361830" elapsed="0.001500"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.368624" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.368517" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.368499" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.369861" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:08.369754" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.369736" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:08.370378" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:08.370085" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.370773" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.370552" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.398644" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:08.371292" elapsed="0.027453"/>
</kw>
<msg time="2026-04-28T03:05:08.398920" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:08.398989" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.370966" elapsed="0.028060"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:08.460324" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f "y "[C "C "o "n "f "i "g "[C "S "t "i "l "l "[C "H "a "s "[C "O "V "S "[C "I "n "f "o "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:08.399517" elapsed="0.060918"/>
</kw>
<msg time="2026-04-28T03:05:08.460594" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:08.460638" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.399187" elapsed="0.061486"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.460986" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.460750" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.460731" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.461542" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f "y "[C "C "o "n "f "i "g "[C "S "t "i "l "l "[C "H "a "s "[C "O "V "S "[C "I "n "f "o "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.461248" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.461886" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.461681" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.461664" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:08.462013" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:08.464363" elapsed="0.000154"/>
</kw>
<msg time="2026-04-28T03:05:08.464576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:08.463377" elapsed="0.001330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.465043" elapsed="0.000107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.465401" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:08.462765" elapsed="0.002816"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:08.462258" elapsed="0.003386"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:08.369438" elapsed="0.096304"/>
</kw>
<msg time="2026-04-28T03:05:08.465835" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.465878" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.368832" elapsed="0.097081"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:08.466122" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:08.466014" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.465996" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.466585" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.466913" elapsed="0.000042"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:08.467003" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:08.368181" elapsed="0.098930"/>
</kw>
<msg time="2026-04-28T03:05:08.467203" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:08.467247" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.363676" elapsed="0.103606"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.467595" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.467357" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.467340" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:08.363545" elapsed="0.104150"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:08.363381" elapsed="0.104343"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:08.361074" elapsed="0.106703"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:08.356501" elapsed="0.111330"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:08.356089" elapsed="0.111787"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:08.353299" elapsed="0.114629"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:08.475227" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:08.475390" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:05:08.475510" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:08.468108" elapsed="0.007439"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.482810" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:08.481972" elapsed="0.000879"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.479313" elapsed="0.003594"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.483164" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.482964" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.479287" elapsed="0.003986"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.483812" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.483460" elapsed="0.000431"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:08.483971" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:08.475913" elapsed="0.008235"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:08.501575" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:08.501757" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:08.501864" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:08.492221" elapsed="0.009669"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.509243" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:08.507603" elapsed="0.001705"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.504559" elapsed="0.004839"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.509802" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.509482" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.504541" elapsed="0.005466"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.510863" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:08.510306" elapsed="0.000768"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:08.511171" elapsed="0.000066"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:08.502324" elapsed="0.009123"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:08.502022" elapsed="0.009492"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:08.511876" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:08.511568" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:08.502003" elapsed="0.010066"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:08.512368" elapsed="0.000367"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:08.516266" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:08.513536" elapsed="0.002857">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:08.513219" elapsed="0.003262">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:08.512856" elapsed="0.003703">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:08.491772" elapsed="0.024903">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:10.541537" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:10.541823" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:10.542015" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:10.533402" elapsed="0.008653"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:10.550353" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:10.549179" elapsed="0.001227"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:10.545998" elapsed="0.004485"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:10.550803" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:10.550541" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:10.545970" elapsed="0.005011"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:10.551663" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:10.551254" elapsed="0.000600"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:10.551934" elapsed="0.000073"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:10.542656" elapsed="0.009608"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:10.542185" elapsed="0.010143"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:10.552591" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:10.552375" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:10.542153" elapsed="0.010513"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:10.552803" elapsed="0.000227"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:10.555874" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:10.553395" elapsed="0.002591">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:10.553234" elapsed="0.002863">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:10.553095" elapsed="0.003122">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:10.532838" elapsed="0.023502">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:12.581624" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:12.582119" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:12.582465" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:12.570368" elapsed="0.012156"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:12.593274" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:12.592460" elapsed="0.000844"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:12.589203" elapsed="0.004142"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:12.593521" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:12.593375" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:12.589162" elapsed="0.004436"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:12.594010" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:12.593735" elapsed="0.000358"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:12.594140" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:12.583511" elapsed="0.010773"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:12.582722" elapsed="0.011593"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:12.594479" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:12.594339" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:12.582675" elapsed="0.011877"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:12.594688" elapsed="0.000172"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:12.597699" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:12.595244" elapsed="0.002595">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:12.595071" elapsed="0.002861">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:12.594920" elapsed="0.003108">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:12.569583" elapsed="0.028563">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:14.619064" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:14.619530" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:14.619797" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:14.610550" elapsed="0.009304"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:14.631054" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:14.629823" elapsed="0.001277"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:14.626526" elapsed="0.004632"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:14.631457" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:14.631197" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:14.626472" elapsed="0.005126"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:14.632215" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:14.631826" elapsed="0.000570"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:14.632466" elapsed="0.000059"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:14.620961" elapsed="0.011711"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:14.620082" elapsed="0.012637"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:14.633061" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:14.632754" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:14.620034" elapsed="0.013172"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:14.633465" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:14.638438" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:14.634429" elapsed="0.004156">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:14.634196" elapsed="0.004525">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:14.633894" elapsed="0.004985">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:14.609772" elapsed="0.029250">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:16.658960" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:16.659187" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:16.659370" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:16.650011" elapsed="0.009388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.664824" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:16.664035" elapsed="0.000818"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:16.662159" elapsed="0.002734"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.665079" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.664921" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.662140" elapsed="0.003038"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.665573" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:16.665315" elapsed="0.000339"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:16.665700" elapsed="0.000045"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:16.659870" elapsed="0.006017"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:16.659503" elapsed="0.006447"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.666184" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.665988" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.659477" elapsed="0.006810"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:16.666472" elapsed="0.000237"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.670548" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:16.667208" elapsed="0.003509">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:16.666996" elapsed="0.003842">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:16.666792" elapsed="0.004171">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:16.649230" elapsed="0.021898">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<msg time="2026-04-28T03:05:16.671329" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:05:08.484355" elapsed="8.187141">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the node is still in the data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:05:08.352432" elapsed="8.319310">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</test>
<test id="s1-s4-t14" name="Delete the OVSDB Node" line="135">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:16.676430" elapsed="0.000292"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:16.676073" elapsed="0.000724"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.678101" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.677982" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.677961" elapsed="0.000207"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.682644" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.682533" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.682515" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.683703" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:16.683316" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.684193" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:16.683880" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:16.684263" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:16.684414" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:16.682927" elapsed="0.001511"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.689580" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.689467" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.689449" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.690812" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.690694" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.690677" elapsed="0.000202"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:16.691334" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:16.691036" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:16.691738" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:16.691511" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:16.729607" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:16.692251" elapsed="0.037561"/>
</kw>
<msg time="2026-04-28T03:05:16.730067" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:16.730114" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.691912" elapsed="0.038240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:16.764686" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:16.730812" elapsed="0.033989"/>
</kw>
<msg time="2026-04-28T03:05:16.764981" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:16.765028" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.730392" elapsed="0.034673"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.765429" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.765184" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.765158" elapsed="0.000354"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.765972" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:16.765646" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.766325" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.766117" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.766099" elapsed="0.000369"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:16.766505" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:16.769122" elapsed="0.000163"/>
</kw>
<msg time="2026-04-28T03:05:16.769347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:16.768001" elapsed="0.001479"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.769743" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.770095" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:16.767356" elapsed="0.002922"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:16.766794" elapsed="0.003549"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:16.690389" elapsed="0.080051"/>
</kw>
<msg time="2026-04-28T03:05:16.770535" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:16.770578" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.689787" elapsed="0.080831"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:16.770801" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:16.770694" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.770676" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.771301" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.771637" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.771710" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:16.689108" elapsed="0.082713"/>
</kw>
<msg time="2026-04-28T03:05:16.771915" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:16.771981" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.684787" elapsed="0.087235"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.772339" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.772097" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.772080" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:16.684656" elapsed="0.087783"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:16.684490" elapsed="0.087982"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:16.682172" elapsed="0.090355"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:16.677649" elapsed="0.094933"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.677021" elapsed="0.095606"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:16.672973" elapsed="0.099706"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:16.783234" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:16.783281" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:16.772835" elapsed="0.010518"/>
</kw>
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:16.672264" elapsed="0.111243"/>
</test>
<test id="s1-s4-t15" name="Get Operational Topology to make sure the connection has been deleted" line="139">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:16.786819" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:16.786564" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.788078" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.787964" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.787930" elapsed="0.000217"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.792899" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.792790" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.792772" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.794001" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:16.793603" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.794476" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:16.794180" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:16.794545" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:16.794698" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:16.793231" elapsed="0.001494"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.799818" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.799711" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.799693" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.801032" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.800902" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.800884" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:16.801542" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:16.801246" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:16.801957" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:16.801717" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:16.839061" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:16.802456" elapsed="0.036730"/>
</kw>
<msg time="2026-04-28T03:05:16.839356" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:16.839402" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.802135" elapsed="0.037303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:16.935009" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "m "a "k "e "[C "s "u "r "e "[C "t "h "e "[C "c "o "[78Cn "[A[78Cn
 "e "c "t "i "o "n "[C "h "a "s "[C "b "e "e "n "[C "d "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:16.839996" elapsed="0.095265"/>
</kw>
<msg time="2026-04-28T03:05:16.935490" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:16.935537" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.839616" elapsed="0.095958"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.936032" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.935693" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.935660" elapsed="0.000458"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.936635" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "m "a "k "e "[C "s "u "r "e "[C "t "h "e "[C "c "o "[78Cn "[A[78Cn
 "e "c "t "i "o "n "[C "h "a "s "[C "b "e "e "n "[C "d "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:16.936253" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.937134" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.936873" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.936855" elapsed="0.000363"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:16.937255" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:16.939868" elapsed="0.000184"/>
</kw>
<msg time="2026-04-28T03:05:16.940117" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:16.938769" elapsed="0.001482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.940516" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.940833" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:16.938141" elapsed="0.002912"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:16.937558" elapsed="0.003562"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:16.800602" elapsed="0.140616"/>
</kw>
<msg time="2026-04-28T03:05:16.941314" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:16.941358" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.800045" elapsed="0.141351"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:16.941820" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:05:16.941474" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.941455" elapsed="0.000452"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.942326" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.942663" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.942736" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:16.799372" elapsed="0.143472"/>
</kw>
<msg time="2026-04-28T03:05:16.942952" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:16.942999" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.795104" elapsed="0.147933"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.943357" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.943112" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.943095" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:16.794969" elapsed="0.148486"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:16.794781" elapsed="0.148706"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:16.792428" elapsed="0.151116"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:16.787656" elapsed="0.155946"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.787242" elapsed="0.156406"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:16.784484" elapsed="0.159220"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.944240" level="INFO">@{list} = [ ovsdb://10.30.170.161:6634 ]</msg>
<var>@{list}</var>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:16.943858" elapsed="0.000409"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:16.969226" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:16.969456" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:16.969608" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:16.956130" elapsed="0.013508"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.979461" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:16.978684" elapsed="0.000806"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:16.975603" elapsed="0.003927"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.979700" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.979557" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.975563" elapsed="0.004213"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.980177" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:16.979910" elapsed="0.000395"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:16.980350" elapsed="0.000034"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:16.970498" elapsed="0.009984"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:16.969727" elapsed="0.010786"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:16.980676" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:16.980539" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.969704" elapsed="0.011048"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:05:16.980993" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.980955" elapsed="0.000089"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:05:16.980921" elapsed="0.000145"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:05:16.980807" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.980792" elapsed="0.000316"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:16.981242" elapsed="0.000170"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:16.981760" elapsed="0.002587"/>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="PASS" start="2026-04-28T03:05:16.981604" elapsed="0.002783"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:05:16.981471" elapsed="0.002948"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:05:16.955644" elapsed="0.028831"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:05:16.944473" elapsed="0.040056"/>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:16.783790" elapsed="0.200860"/>
</test>
<test id="s1-s4-t16" name="Get Configuration Topology to make sure the connection has been deleted" line="150">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:16.987781" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:16.987526" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.989074" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.988919" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.988899" elapsed="0.000243"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:16.993613" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:16.993507" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:16.993489" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.994659" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:16.994282" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:16.995145" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:16.994836" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:16.995213" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:05:16.995365" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:16.993899" elapsed="0.001490"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.000439" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.000332" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.000314" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.001668" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.001563" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.001545" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:17.002195" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:17.001870" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.002601" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:17.002373" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.037773" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:17.003268" elapsed="0.034616"/>
</kw>
<msg time="2026-04-28T03:05:17.038090" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:17.038136" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.002778" elapsed="0.035394"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.115966" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "m "a "k "e "[C "s "u "r "e "[C "t "h "e "[C "[78Cc "[A[78Co
 "n "n "e "c "t "i "o "n "[C "h "a "s "[C "b "e "e "n "[C "d "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:17.038690" elapsed="0.077422"/>
</kw>
<msg time="2026-04-28T03:05:17.116286" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:17.116332" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.038344" elapsed="0.078026"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.116702" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.116461" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.116436" elapsed="0.000352"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.117269" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "u "r "a "t "i "o "n "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "m "a "k "e "[C "s "u "r "e "[C "t "h "e "[C "[78Cc "[A[78Co
 "n "n "e "c "t "i "o "n "[C "h "a "s "[C "b "e "e "n "[C "d "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.116922" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.117632" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.117426" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.117409" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:17.117741" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:17.120241" elapsed="0.000161"/>
</kw>
<msg time="2026-04-28T03:05:17.120463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:17.119232" elapsed="0.001364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.120861" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.121333" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:17.118577" elapsed="0.002940"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:17.118043" elapsed="0.003539"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:17.001263" elapsed="0.120419"/>
</kw>
<msg time="2026-04-28T03:05:17.121776" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:17.121819" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.000647" elapsed="0.121211"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:17.122069" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:17.121959" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.121917" elapsed="0.000234"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.122546" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.122873" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.122959" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:16.999998" elapsed="0.123073"/>
</kw>
<msg time="2026-04-28T03:05:17.123251" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:17.123296" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.995741" elapsed="0.127593"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.123657" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.123411" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.123395" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:16.995608" elapsed="0.128155"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:16.995441" elapsed="0.128355"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:16.993151" elapsed="0.130701"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:16.988630" elapsed="0.135281"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:16.988209" elapsed="0.135767"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:16.985528" elapsed="0.138504"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.124538" level="INFO">@{list} = [ ovsdb://10.30.170.161:6634 ]</msg>
<var>@{list}</var>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:17.124184" elapsed="0.000380"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:17.144441" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:17.144693" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '57'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1"}]} 
 </msg>
<msg time="2026-04-28T03:05:17.144824" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:17.136025" elapsed="0.008834"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.152156" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:17.151401" elapsed="0.000795"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:17.148750" elapsed="0.003504"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.152488" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.152290" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.148725" elapsed="0.003872"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.153228" level="INFO">{
    "network-topology:topology": [
        {
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.152784" elapsed="0.000508"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:17.153353" elapsed="0.000062"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:17.145434" elapsed="0.008117"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:17.145017" elapsed="0.008577"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.153819" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.153628" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.144989" elapsed="0.008931"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:05:17.154273" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.154225" elapsed="0.000099"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:05:17.154205" elapsed="0.000149"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:05:17.154044" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.154021" elapsed="0.000391"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:17.154595" elapsed="0.000230"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:17.155312" elapsed="0.003240"/>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="PASS" start="2026-04-28T03:05:17.155105" elapsed="0.003504"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:05:17.154901" elapsed="0.003750"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:05:17.135555" elapsed="0.023477"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:05:17.124715" elapsed="0.034393"/>
</kw>
<doc>This request will fetch the configuration topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:16.984982" elapsed="0.174288"/>
</test>
<test id="s1-s4-t17" name="Reconnect to OVSDB Node" line="161">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:17.163085" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:17.162813" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.164339" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.164230" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.164211" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.168893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.168787" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.168769" elapsed="0.000222"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.169972" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:17.169577" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.170448" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:17.170152" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:17.170516" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:05:17.170670" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:17.169209" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.175963" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.175842" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.175824" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.177200" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.177093" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.177075" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:17.177699" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:17.177401" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.178118" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:17.177875" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.209200" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:17.178618" elapsed="0.030690"/>
</kw>
<msg time="2026-04-28T03:05:17.209475" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:17.209521" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.178296" elapsed="0.031261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.247895" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "R "e "c "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:17.210086" elapsed="0.037933"/>
</kw>
<msg time="2026-04-28T03:05:17.248177" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:17.248221" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "R "e "c "o "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.209723" elapsed="0.038535"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.248606" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.248387" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.248366" elapsed="0.000318"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.249169" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "R "e "c "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.248822" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.249511" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.249307" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.249290" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:17.249619" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:17.252108" elapsed="0.000159"/>
</kw>
<msg time="2026-04-28T03:05:17.252330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:17.251037" elapsed="0.001424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.252723" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.253083" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:17.250418" elapsed="0.002845"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:17.249880" elapsed="0.003445"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:17.176746" elapsed="0.076676"/>
</kw>
<msg time="2026-04-28T03:05:17.253513" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:17.253556" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "R "e "c "o "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.176171" elapsed="0.077423"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:17.253776" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:17.253669" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.253652" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.254261" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.254584" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.254654" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:17.175506" elapsed="0.079253"/>
</kw>
<msg time="2026-04-28T03:05:17.254852" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:17.254895" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "R "e "c "o "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.171059" elapsed="0.083890"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.255265" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.255026" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.255009" elapsed="0.000331"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:17.170913" elapsed="0.084450"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:17.170746" elapsed="0.084647"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:17.168432" elapsed="0.087015"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:17.163922" elapsed="0.091579"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.163505" elapsed="0.092039"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:17.160425" elapsed="0.095169"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:05:17.256407" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:05:17.256569" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:05:17.256252" elapsed="0.000344"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:17.257039" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:17.256744" elapsed="0.000323"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:17.257444" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:17.257217" elapsed="0.000253"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.257984" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:17.257620" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.258620" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.258157" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.259112" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.258810" elapsed="0.000348"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:17.278459" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:05:17.278508" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:17.278594" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:17.259303" elapsed="0.019317"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.282912" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.281070" elapsed="0.001920"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.285068" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:17.283153" elapsed="0.001942"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:17.283015" elapsed="0.002117"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.281051" elapsed="0.004103"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.285536" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.285290" elapsed="0.000288"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:17.285621" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:17.278889" elapsed="0.006855"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:17.285883" elapsed="0.002265"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:05:17.255868" elapsed="0.032342"/>
</kw>
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:17.159672" elapsed="0.128641"/>
</test>
<test id="s1-s4-t18" name="Get Operational Topology After Node Reconnect" line="165">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:17.291541" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:17.291291" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.292777" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.292663" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.292644" elapsed="0.000249"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.297449" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.297342" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.297325" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.298512" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:17.298128" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.298999" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:17.298688" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:17.299069" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:17.299222" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:17.297733" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.304493" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.304385" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.304367" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.305688" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:17.305582" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.305565" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:17.306206" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:17.305890" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.306599" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:17.306381" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.341605" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:17.307115" elapsed="0.034597"/>
</kw>
<msg time="2026-04-28T03:05:17.341892" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:17.341962" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.306773" elapsed="0.035228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:17.401717" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "N "o "d "e "[C "R "e "c "o "n "n "e "c "[78Ct "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:17.342502" elapsed="0.059398"/>
</kw>
<msg time="2026-04-28T03:05:17.402119" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:17.402165" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.342167" elapsed="0.060034"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.402586" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.402309" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.402280" elapsed="0.000391"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.403196" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "N "o "d "e "[C "R "e "c "o "n "n "e "c "[78Ct "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.402808" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.403554" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.403349" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.403331" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:17.403666" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:17.406402" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:05:17.406630" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:17.405274" elapsed="0.001491"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.407068" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.407396" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:17.404539" elapsed="0.003040"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:17.403982" elapsed="0.003662"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:17.305286" elapsed="0.102456"/>
</kw>
<msg time="2026-04-28T03:05:17.407843" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:17.407886" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.304700" elapsed="0.103223"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:17.408135" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:17.408026" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.408008" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.408619" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.409029" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:17.409102" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:17.304050" elapsed="0.105161"/>
</kw>
<msg time="2026-04-28T03:05:17.409304" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:17.409348" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.299601" elapsed="0.109785"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.409700" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.409461" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.409444" elapsed="0.000331"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:17.299469" elapsed="0.110330"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:17.299300" elapsed="0.110533"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:17.296988" elapsed="0.112906"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:17.292380" elapsed="0.117671"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:17.291964" elapsed="0.118136"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:17.289320" elapsed="0.120835"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:17.425526" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:17.425813" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:17.426055" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:17.418352" elapsed="0.007740"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.433433" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:17.432380" elapsed="0.001093"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:17.429760" elapsed="0.003769"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.433762" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.433564" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.429735" elapsed="0.004134"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.434417" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:17.434071" elapsed="0.000457"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:17.434587" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:17.426624" elapsed="0.008136"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:17.426202" elapsed="0.008599"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:17.435045" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:17.434834" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:17.426176" elapsed="0.008970"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:17.435330" elapsed="0.000230"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:17.439375" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:17.436052" elapsed="0.003493">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:17.435819" elapsed="0.003847">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:17.435639" elapsed="0.004132">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:17.417888" elapsed="0.022064">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:19.463114" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:19.463334" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:19.463454" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:19.453869" elapsed="0.009611"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:19.469345" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:19.468417" elapsed="0.000970"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:19.466495" elapsed="0.002949"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:19.469682" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:19.469483" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:19.466477" elapsed="0.003314"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:19.470349" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:19.469996" elapsed="0.000726"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:19.470791" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:19.463983" elapsed="0.007033"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:19.463578" elapsed="0.007482"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:19.471293" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:19.471095" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:19.463554" elapsed="0.007842"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:19.471580" elapsed="0.000256"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:19.475659" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:19.472334" elapsed="0.003453">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:19.472120" elapsed="0.003828">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:19.471917" elapsed="0.004176">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:19.453135" elapsed="0.023122">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:21.499390" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:21.499604" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:21.499777" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:21.490139" elapsed="0.009666"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:21.505826" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:21.504748" elapsed="0.001119"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:21.502585" elapsed="0.003337"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:21.506180" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:21.505982" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:21.502567" elapsed="0.003718"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:21.506815" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:21.506467" elapsed="0.000497"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:21.507028" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:21.500328" elapsed="0.006888"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:21.499922" elapsed="0.007336"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:21.507479" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:21.507291" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:21.499892" elapsed="0.007687"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:21.507759" elapsed="0.000264"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:21.512112" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:21.508497" elapsed="0.003801">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:21.508285" elapsed="0.004136">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:21.508102" elapsed="0.004423">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:21.489326" elapsed="0.023360">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:23.534275" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:23.534580" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:23.534752" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:23.526367" elapsed="0.008423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:23.542558" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:23.541427" elapsed="0.001173"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:23.538731" elapsed="0.003925"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:23.542894" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:23.542694" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:23.538706" elapsed="0.004298"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:23.543393" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:23.543138" elapsed="0.000390"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:23.543575" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:23.535443" elapsed="0.008268"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:23.534925" elapsed="0.008816"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:23.543900" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:23.543765" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:23.534892" elapsed="0.009096"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:23.544121" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:23.547037" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:23.544637" elapsed="0.002493">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:23.544481" elapsed="0.002735">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:23.544348" elapsed="0.002978">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:23.525774" elapsed="0.021670">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:25.569404" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:25.569729" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:25.570025" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:25.561352" elapsed="0.008713"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.580129" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:25.579241" elapsed="0.000927"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:25.576719" elapsed="0.003506"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.580410" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.580256" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.576684" elapsed="0.003805"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.580907" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:25.580624" elapsed="0.000382"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:25.581055" elapsed="0.000043"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:25.570763" elapsed="0.010452"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:25.570214" elapsed="0.011036"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.581418" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.581276" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.570172" elapsed="0.011321"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:25.581626" elapsed="0.000179"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.584773" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:25.582221" elapsed="0.002932">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:25.582035" elapsed="0.003228">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:25.581869" elapsed="0.003472">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:25.560723" elapsed="0.024739">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<msg time="2026-04-28T03:05:25.585608" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:05:17.410319" elapsed="8.175413">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:05:17.288588" elapsed="8.297330">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</test>
<test id="s1-s4-t19" name="Get Config Topology After Reconnect" line="175">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:25.589392" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:25.589134" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:25.590700" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:25.590579" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.590559" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:25.595406" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:25.595297" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.595279" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.596503" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:25.596078" elapsed="0.000456"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.597084" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:25.596701" elapsed="0.000410"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:25.597156" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:05:25.597316" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:25.595692" elapsed="0.001648"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:25.602811" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:25.602696" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.602676" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:25.604134" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:25.604023" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.604002" elapsed="0.000201"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:25.604653" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:25.604342" elapsed="0.000338"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:25.605145" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:25.604833" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:25.635098" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:25.605652" elapsed="0.029561"/>
</kw>
<msg time="2026-04-28T03:05:25.635381" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:25.635427" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:25.605324" elapsed="0.030139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:25.678464" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:25.635995" elapsed="0.042588"/>
</kw>
<msg time="2026-04-28T03:05:25.678743" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:25.678788" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:25.635627" elapsed="0.043197"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.679155" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.678907" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.678885" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.679675" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "A "f "t "e "r "[C "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:25.679373" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.680116" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.679885" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.679866" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:25.680227" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:25.682817" elapsed="0.000178"/>
</kw>
<msg time="2026-04-28T03:05:25.683058" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:25.681721" elapsed="0.001470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.683456" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.683776" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:25.681111" elapsed="0.002861"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:25.680512" elapsed="0.003526"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:25.603688" elapsed="0.080448"/>
</kw>
<msg time="2026-04-28T03:05:25.684231" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:25.684275" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:25.603044" elapsed="0.081268"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:25.684495" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:25.684388" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.684370" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.685029" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.685378" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:25.685450" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:25.602339" elapsed="0.083218"/>
</kw>
<msg time="2026-04-28T03:05:25.685651" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:25.685694" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:25.597710" elapsed="0.088022"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.686069" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.685807" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.685790" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:25.597574" elapsed="0.088595"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:25.597398" elapsed="0.088804"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:25.594909" elapsed="0.091352"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:25.590281" elapsed="0.096037"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:25.589816" elapsed="0.096549"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:25.587056" elapsed="0.099363"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:25.693332" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:25.693494" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:05:25.693639" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:25.686577" elapsed="0.007087"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.699008" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:25.698361" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:25.696439" elapsed="0.002643"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.699253" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.699109" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.696420" elapsed="0.002908"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.699711" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:25.699460" elapsed="0.000306"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:25.699810" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:25.693951" elapsed="0.005998"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:25.713671" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:25.713851" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:25.713982" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:25.707628" elapsed="0.006381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.719281" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:25.718561" elapsed="0.000749"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:25.716651" elapsed="0.002733"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.719556" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.719412" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.716633" elapsed="0.002999"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.720031" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:25.719766" elapsed="0.000345"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:25.720155" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:25.714395" elapsed="0.005886"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:25.714093" elapsed="0.006218"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:25.720474" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:25.720335" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:25.714074" elapsed="0.006472"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:25.720677" elapsed="0.000182"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:25.723766" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:25.721228" elapsed="0.002662">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:25.721074" elapsed="0.002920">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:25.720918" elapsed="0.003156">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:25.707191" elapsed="0.016999">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:27.745452" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:27.745741" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:27.745905" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:27.737529" elapsed="0.008444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:27.753494" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:27.752430" elapsed="0.001106"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:27.749778" elapsed="0.003816"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:27.753832" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:27.753631" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:27.749752" elapsed="0.004210"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:27.754507" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:27.754152" elapsed="0.000635"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:27.754857" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:27.746588" elapsed="0.008488"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:27.746110" elapsed="0.009001"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:27.755277" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:27.755136" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:27.746076" elapsed="0.009275"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:27.755483" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:27.758430" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:27.756042" elapsed="0.002503">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:27.755865" elapsed="0.002772">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:27.755713" elapsed="0.003053">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:27.736943" elapsed="0.021980">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:29.780338" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:29.781018" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:29.781466" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:29.771873" elapsed="0.009672"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:29.790446" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:29.789358" elapsed="0.001129"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:29.786623" elapsed="0.003922"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:29.790783" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:29.790584" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:29.786596" elapsed="0.004356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:29.791656" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:29.791289" elapsed="0.000479"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:29.791832" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:29.782827" elapsed="0.009225"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:29.781798" elapsed="0.010300"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:29.792326" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:29.792132" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:29.781737" elapsed="0.010690"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:29.792608" elapsed="0.000232"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:29.796901" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:29.793344" elapsed="0.003887">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:29.793128" elapsed="0.004232">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:29.792921" elapsed="0.004543">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:29.771292" elapsed="0.026332">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:32.928455" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:32.929067" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:32.929503" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:31.809392" elapsed="1.120187"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:32.942958" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:32.941355" elapsed="0.001683"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:32.938201" elapsed="0.004934"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:32.943418" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:32.943190" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:32.938100" elapsed="0.005438"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:32.944197" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:32.943748" elapsed="0.000667"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:32.944495" elapsed="0.000067"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:32.930857" elapsed="0.013872"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:32.929859" elapsed="0.014927"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:32.945071" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:32.944825" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:32.929789" elapsed="0.015398"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:32.945442" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:32.950569" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:32.946428" elapsed="0.004252">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:32.946137" elapsed="0.004640">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:32.945853" elapsed="0.005040">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:31.808804" elapsed="1.142242">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:34.972654" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:34.972875" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:34.973078" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:34.964049" elapsed="0.009057"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:34.978951" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:34.977864" elapsed="0.001130"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:34.975819" elapsed="0.003232"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:34.979285" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:34.979088" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:34.975801" elapsed="0.003592"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:34.979926" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:34.979576" elapsed="0.000485"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:34.980125" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:34.973565" elapsed="0.006748"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:34.973206" elapsed="0.007150"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:34.980595" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:34.980403" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:34.973182" elapsed="0.007514"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:34.980883" elapsed="0.000253"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:34.984978" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:34.981615" elapsed="0.003531">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:05:34.981406" elapsed="0.003861">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:34.981217" elapsed="0.004154">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:34.963292" elapsed="0.022238">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<msg time="2026-04-28T03:05:34.985718" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:05:25.700103" elapsed="9.285779">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<doc>This will fetch the configuration topology from configuration data store after reconnect</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:05:25.586361" elapsed="9.399786">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</test>
<test id="s1-s4-t20" name="Create OVSDB NODE HOST1" line="187">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:34.990480" elapsed="0.000220"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:34.990225" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:34.991733" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:34.991622" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:34.991603" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:34.996297" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:34.996192" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:34.996175" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:34.997358" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:34.996979" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:34.997829" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:34.997536" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:34.997899" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:34.998070" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:34.996599" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.003213" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.003104" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.003086" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.004498" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.004345" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.004328" elapsed="0.000247"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:35.005036" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.004713" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.005446" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.005213" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.035628" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:35.005963" elapsed="0.030150"/>
</kw>
<msg time="2026-04-28T03:05:35.036430" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:35.036505" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.005624" elapsed="0.030937"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.082566" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "O "V "S "D "B "[C "N "O "D "E "[C "H "O "S "T "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:35.037418" elapsed="0.045287"/>
</kw>
<msg time="2026-04-28T03:05:35.082880" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:35.082927" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.036823" elapsed="0.046167"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.083341" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.083086" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.083057" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.083871" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "O "V "S "D "B "[C "N "O "D "E "[C "H "O "S "T "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.083557" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.084233" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.084028" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.084010" elapsed="0.000376"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:35.084421" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.087062" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:05:35.087289" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:35.085913" elapsed="0.001507"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.087683" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.088037" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:35.085285" elapsed="0.002944"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:35.084712" elapsed="0.003584"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:35.004044" elapsed="0.084419"/>
</kw>
<msg time="2026-04-28T03:05:35.088589" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.088638" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.003426" elapsed="0.085249"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:35.088863" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:35.088754" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.088736" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.089365" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.089698" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.089770" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:35.002744" elapsed="0.087134"/>
</kw>
<msg time="2026-04-28T03:05:35.089989" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.090034" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:34.998446" elapsed="0.091628"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.090391" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.090149" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.090132" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:34.998314" elapsed="0.092179"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:34.998146" elapsed="0.092380"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:34.995820" elapsed="0.094763"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:34.991337" elapsed="0.099302"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:34.990899" elapsed="0.099785"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:34.987421" elapsed="0.103317"/>
</kw>
<kw name="Create OVSDB Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:05:35.091536" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_node.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_node.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:05:35.091712" level="INFO">${body} = {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "127.0.0.1",
                "ovsdb:remote-port": "61644"
    ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_node.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:05:35.091371" elapsed="0.000369"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:35.092180" level="INFO">${body} = {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "61644"
...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.091905" elapsed="0.000337"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:35.092664" level="INFO">${body} = {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "6634"
 ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.092432" elapsed="0.000258"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.093163" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1</msg>
<var>${uri}</var>
<arg>${RFC8040_TOPO_OVSDB1_API}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.092841" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.093583" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.093336" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.094032" level="INFO">data: {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "6634"
            }
        }
    ]
}


</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.093770" elapsed="0.000315"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:35.115688" level="INFO">POST Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '233', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "6634"
            }
        }
    ]
}


 
 </msg>
<msg time="2026-04-28T03:05:35.115807" level="INFO">POST Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:35.116118" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:35.094228" elapsed="0.021956"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.124955" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.122179" elapsed="0.002869"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.127966" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.125272" elapsed="0.002733"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:35.125084" elapsed="0.002973"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.122152" elapsed="0.005936"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.128640" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.128277" elapsed="0.000421"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:35.128759" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:35.116875" elapsed="0.012057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:35.129148" elapsed="0.003140"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<status status="PASS" start="2026-04-28T03:05:35.091000" elapsed="0.041409"/>
</kw>
<doc>This request will create OVSDB NODE HOST1</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:34.986703" elapsed="0.145845"/>
</test>
<test id="s1-s4-t21" name="Create QOS entry" line="191">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:35.136066" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:35.135795" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.137336" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.137225" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.137207" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.141879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.141763" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.141746" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.142953" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:35.142551" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.143423" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:35.143131" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:35.143491" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:35.143640" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:35.142177" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.148984" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.148860" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.148842" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.150191" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.150084" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.150067" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:35.150684" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.150389" elapsed="0.000321"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.151096" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.150856" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.183906" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:35.151596" elapsed="0.032440"/>
</kw>
<msg time="2026-04-28T03:05:35.184233" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:35.184279" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.151270" elapsed="0.033062"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.215125" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "Q "O "S "[C "e "n "t "r "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:35.184836" elapsed="0.030619"/>
</kw>
<msg time="2026-04-28T03:05:35.215785" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:35.215852" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.184506" elapsed="0.031399"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.216600" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.216110" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.216065" elapsed="0.000661"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.217453" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "Q "O "S "[C "e "n "t "r "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.216919" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.217812" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.217599" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.217581" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:35.217951" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.220753" elapsed="0.000171"/>
</kw>
<msg time="2026-04-28T03:05:35.221005" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:35.219600" elapsed="0.001544"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.221411" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.221734" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:35.218899" elapsed="0.003021"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:35.218294" elapsed="0.003715"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:35.149750" elapsed="0.072360"/>
</kw>
<msg time="2026-04-28T03:05:35.222284" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.222330" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.149195" elapsed="0.073173"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:35.222560" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:35.222449" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.222430" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.223071" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.223415" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.223488" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:35.148521" elapsed="0.075079"/>
</kw>
<msg time="2026-04-28T03:05:35.223700" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.223744" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.144083" elapsed="0.079698"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.224120" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.223860" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.223842" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:35.143945" elapsed="0.080275"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:35.143755" elapsed="0.080502"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:35.141408" elapsed="0.082931"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:35.136915" elapsed="0.087484"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.136498" elapsed="0.087951"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:35.133704" elapsed="0.090802"/>
</kw>
<kw name="Create Qos" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:05:35.225260" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qos.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qos.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:05:35.225502" level="INFO">${body} = {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_qos.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:05:35.225096" elapsed="0.000433"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.226114" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.225681" elapsed="0.000459"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:35.226562" level="INFO">${body} = {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>QOS-1</arg>
<arg>${qos}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.226307" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.227257" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.226743" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.227705" level="INFO">data: {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ]
    }
  ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.227452" elapsed="0.000299"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:35.239214" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '256', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ]
    }
  ]
}
 
 </msg>
<msg time="2026-04-28T03:05:35.239301" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:35.239489" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:35.227900" elapsed="0.011645"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.249341" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.245100" elapsed="0.004307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.251474" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.249569" elapsed="0.001932"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:35.249432" elapsed="0.002106"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.245057" elapsed="0.006504"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.251962" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.251699" elapsed="0.000308"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:35.252051" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:35.240181" elapsed="0.011995"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:35.252331" elapsed="0.002265"/>
</kw>
<arg>${QOS}</arg>
<status status="PASS" start="2026-04-28T03:05:35.224751" elapsed="0.029907"/>
</kw>
<doc>This request will create QOS entry</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:35.133019" elapsed="0.121744"/>
</test>
<test id="s1-s4-t22" name="Create Queue entry to the queues list of a ovsdb node" line="195">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:35.257970" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:35.257692" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.259220" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.259104" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.259085" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.263772" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.263661" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.263644" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.264862" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:35.264472" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.265355" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:35.265059" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:35.265423" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:35.265574" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:35.264070" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.270863" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.270754" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.270736" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.272082" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.271974" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.271954" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:35.272610" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.272310" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.273022" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.272783" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.303652" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:35.273517" elapsed="0.030320"/>
</kw>
<msg time="2026-04-28T03:05:35.304071" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:35.304118" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.273197" elapsed="0.031077"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.367557" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "t "o "[C "t "h "e "[C "q "u "e "u "e "s "[C "l "i "s "t "[C "o "f "[C "a "[C "o "[78Cv "[A[78Cs
 "d "b "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:35.304905" elapsed="0.062782"/>
</kw>
<msg time="2026-04-28T03:05:35.367851" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:35.367896" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.304498" elapsed="0.063434"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.368318" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.368055" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.368027" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.368840" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "t "o "[C "t "h "e "[C "q "u "e "u "e "s "[C "l "i "s "t "[C "o "f "[C "a "[C "o "[78Cv "[A[78Cs
 "d "b "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.368535" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.369218" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.369010" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.368992" elapsed="0.000303"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:35.369331" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.371974" elapsed="0.000163"/>
</kw>
<msg time="2026-04-28T03:05:35.372198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:35.370844" elapsed="0.001522"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.372638" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.372980" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:35.370209" elapsed="0.002952"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:35.369647" elapsed="0.003580"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:35.271653" elapsed="0.101670"/>
</kw>
<msg time="2026-04-28T03:05:35.373416" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.373459" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.271092" elapsed="0.102403"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:35.373685" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:35.373572" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.373553" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.374188" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.374526" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.374598" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:35.270415" elapsed="0.104292"/>
</kw>
<msg time="2026-04-28T03:05:35.374800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.374843" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.265981" elapsed="0.108898"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.375306" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.375059" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.375041" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:35.265831" elapsed="0.109575"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:35.265655" elapsed="0.109788"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:35.263302" elapsed="0.112202"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:35.258791" elapsed="0.116770"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.258379" elapsed="0.117229"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:35.255712" elapsed="0.119956"/>
</kw>
<kw name="Create Queue" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:05:35.376426" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qoslinkedqueue.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qoslinkedqueue.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:05:35.376595" level="INFO">${body} = {
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value"...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_qoslinkedqueue.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:05:35.376268" elapsed="0.000354"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:35.377057" level="INFO">${body} = {
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>QUEUE-1</arg>
<arg>${queue}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.376789" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.377646" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${queue}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.377238" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.380476" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.377826" elapsed="0.002696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.380916" level="INFO">data: {
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value": "1230000"
        },
        {
          "queue-other-config-key": "min-rate",
          "queue-other-config-value": "1000000"
        }
      ],
      "queues-external-ids": [
        {
          "queues-external-id-key": "qexid",
          "queues-external-id-value": "qexvalue"
        }
      ]
    }
  ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.380669" elapsed="0.000398"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:35.392222" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '513', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value": "1230000"
        },
        {
          "queue-other-config-key": "min-rate",
          "queue-other-config-value": "1000000"
        }
      ],
      "queues-external-ids": [
        {
          "queues-external-id-key": "qexid",
          "queues-external-id-value": "qexvalue"
        }
      ]
    }
  ]
}
 
 </msg>
<msg time="2026-04-28T03:05:35.392276" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:35.392373" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:35.381212" elapsed="0.011185"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.396729" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.394848" elapsed="0.001943"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.398864" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.396966" elapsed="0.001925"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:35.396817" elapsed="0.002110"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.394829" elapsed="0.004134"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.399346" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.399101" elapsed="0.000286"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:35.399466" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:35.392666" elapsed="0.006927"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:35.399732" elapsed="0.002319"/>
</kw>
<arg>${QUEUE}</arg>
<status status="PASS" start="2026-04-28T03:05:35.375912" elapsed="0.026202"/>
</kw>
<doc>This request will creates Queue entry in the queues list of a ovsdb node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:35.255074" elapsed="0.147144"/>
</test>
<test id="s1-s4-t23" name="Update existing Queue entry to a OVSDB Node" line="199">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:35.405397" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:35.405143" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.406629" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.406518" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.406499" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.411241" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.411134" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.411116" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.412317" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:35.411886" elapsed="0.000458"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.412787" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:35.412495" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:35.412855" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:35.413028" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:35.411519" elapsed="0.001534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.418703" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.418594" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.418576" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.419923" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.419818" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.419800" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:35.420486" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.420149" elapsed="0.000364"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.420889" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.420662" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.450460" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:35.421404" elapsed="0.029160"/>
</kw>
<msg time="2026-04-28T03:05:35.450738" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:35.450784" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.421082" elapsed="0.029739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.503103" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t "e "[C "e "x "i "s "t "i "n "g "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "t "o "[C "a "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:35.451346" elapsed="0.051876"/>
</kw>
<msg time="2026-04-28T03:05:35.503381" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:35.503427" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.451010" elapsed="0.052454"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.503814" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.503543" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.503523" elapsed="0.000372"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.504378" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t "e "[C "e "x "i "s "t "i "n "g "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "t "o "[C "a "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.504056" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.504731" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.504526" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.504508" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:35.504838" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.507311" elapsed="0.000157"/>
</kw>
<msg time="2026-04-28T03:05:35.507528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:35.506258" elapsed="0.001401"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.507919" elapsed="0.000105"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.508301" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:35.505637" elapsed="0.002845"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:35.505119" elapsed="0.003426"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:35.419519" elapsed="0.089122"/>
</kw>
<msg time="2026-04-28T03:05:35.508732" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.508775" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.418929" elapsed="0.089883"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:35.509019" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:35.508887" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.508870" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.509491" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.509812" elapsed="0.000057"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.509919" elapsed="0.000027"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:35.418221" elapsed="0.091821"/>
</kw>
<msg time="2026-04-28T03:05:35.510135" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.510177" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.413420" elapsed="0.096794"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.510528" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.510287" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.510271" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:35.413286" elapsed="0.097339"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:35.413109" elapsed="0.097549"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:35.410761" elapsed="0.099952"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:35.406230" elapsed="0.104538"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.405798" elapsed="0.105012"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:35.403119" elapsed="0.107742"/>
</kw>
<kw name="Create Queue" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:05:35.511632" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qoslinkedqueue.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qoslinkedqueue.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:05:35.511786" level="INFO">${body} = {
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value"...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_qoslinkedqueue.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:05:35.511479" elapsed="0.000333"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:05:35.512275" level="INFO">${body} = {
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>QUEUE-1</arg>
<arg>${queue}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.512009" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.512849" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${queue}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.512454" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.513357" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.513108" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.514013" level="INFO">data: {
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value": "1230000"
        },
        {
          "queue-other-config-key": "min-rate",
          "queue-other-config-value": "1000000"
        }
      ],
      "queues-external-ids": [
        {
          "queues-external-id-key": "qexid",
          "queues-external-id-value": "qexvalue"
        }
      ]
    }
  ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.513542" elapsed="0.000520"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:35.526195" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '513', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "ovsdb:queues": [
    {
      "queue-id": "QUEUE-1",
      "dscp": 51,
      "queues-other-config": [
        {
          "queue-other-config-key": "max-rate",
          "queue-other-config-value": "1230000"
        },
        {
          "queue-other-config-key": "min-rate",
          "queue-other-config-value": "1000000"
        }
      ],
      "queues-external-ids": [
        {
          "queues-external-id-key": "qexid",
          "queues-external-id-value": "qexvalue"
        }
      ]
    }
  ]
}
 
 </msg>
<msg time="2026-04-28T03:05:35.526246" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:35.526333" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:35.514204" elapsed="0.012154"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.530661" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.528789" elapsed="0.001932"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.532826" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.530880" elapsed="0.001973"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:35.530746" elapsed="0.002143"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.528771" elapsed="0.004140"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.533309" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.533061" elapsed="0.000295"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:35.533399" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:35.526624" elapsed="0.006898"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:35.533660" elapsed="0.002251"/>
</kw>
<arg>${queue}</arg>
<status status="PASS" start="2026-04-28T03:05:35.511161" elapsed="0.024826"/>
</kw>
<doc>This request will update the existing queue entry to a OVSDB Node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:35.402513" elapsed="0.133576"/>
</test>
<test id="s1-s4-t24" name="Update QOS with a Linked queue entry to a OVSDB Node" line="203">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:35.539194" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:35.538926" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.540450" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.540341" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.540322" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.545055" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.544946" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.544916" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.546098" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:35.545702" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.546577" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:35.546277" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:35.546648" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:35.546800" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:35.545335" elapsed="0.001489"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.552071" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.551963" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.551931" elapsed="0.000232"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.553293" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:35.553186" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.553169" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:35.553785" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:35.553492" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.554211" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.553989" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.584817" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:35.554708" elapsed="0.030212"/>
</kw>
<msg time="2026-04-28T03:05:35.585101" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:35.585146" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.554386" elapsed="0.030796"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:35.647116" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t "e "[C "Q "O "S "[C "w "i "t "h "[C "a "[C "L "i "n "k "e "d "[C "q "u "e "u "e "[C "e "n "t "r "y "[C "t "o "[C "a "[C "O "V "[78CS "[A[78CD
 "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:35.585675" elapsed="0.061580"/>
</kw>
<msg time="2026-04-28T03:05:35.647419" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:35.647464" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.585344" elapsed="0.062156"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.647795" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.647578" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.647559" elapsed="0.000313"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.648337" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t "e "[C "Q "O "S "[C "w "i "t "h "[C "a "[C "L "i "n "k "e "d "[C "q "u "e "u "e "[C "e "n "t "r "y "[C "t "o "[C "a "[C "O "V "[78CS "[A[78CD
 "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.648027" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.648690" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.648486" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.648469" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:35.648797" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:35.651197" elapsed="0.000152"/>
</kw>
<msg time="2026-04-28T03:05:35.651464" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:35.650195" elapsed="0.001401"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.651863" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.652295" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:35.649578" elapsed="0.002898"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:35.649062" elapsed="0.003478"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:35.552865" elapsed="0.099771"/>
</kw>
<msg time="2026-04-28T03:05:35.652728" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.652770" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.552306" elapsed="0.100500"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:35.653013" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:05:35.652881" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.652864" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.653491" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.653818" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:35.653888" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:35.551613" elapsed="0.102401"/>
</kw>
<msg time="2026-04-28T03:05:35.654107" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:35.654149" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "U "p "d "a "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.547202" elapsed="0.106983"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:35.654497" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:35.654259" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:35.654242" elapsed="0.000330"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:35.547068" elapsed="0.107527"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:35.546878" elapsed="0.107747"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:35.544540" elapsed="0.110140"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:35.540022" elapsed="0.114711"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:35.539597" elapsed="0.115179"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:35.536957" elapsed="0.117869"/>
</kw>
<kw name="Update Qos" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:05:35.655524" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/update_existingqos.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/update_existingqos.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:05:35.655693" level="INFO">${body} = {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ],
 ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/update_existingqos.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:05:35.655373" elapsed="0.000347"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.656303" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:35.655866" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.656726" level="INFO">URL is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1</msg>
<arg>URL is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.656482" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:35.657223" level="INFO">data: {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ],
      "qos-type": "ovsdb:qos-type-linux-htb",
      "queue-list": [
        {
          "queue-number": "0"
        }
      ]
    }
  ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:35.656909" elapsed="0.000360"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:36.392489" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '337', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ],
      "qos-type": "ovsdb:qos-type-linux-htb",
      "queue-list": [
        {
          "queue-number": "0"
        }
      ]
    }
  ]
}
 
 </msg>
<msg time="2026-04-28T03:05:36.392653" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:36.392960" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:35.657416" elapsed="0.735612"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.401113" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.398403" elapsed="0.002804"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.404226" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:05:36.401439" elapsed="0.002825"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:36.401249" elapsed="0.003065"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.398368" elapsed="0.005976"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.404895" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:36.404540" elapsed="0.000437"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:36.405045" elapsed="0.000055"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:36.393976" elapsed="0.011267"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:36.405440" elapsed="0.003196"/>
</kw>
<arg>${QOS}</arg>
<status status="PASS" start="2026-04-28T03:05:35.655063" elapsed="0.753638"/>
</kw>
<doc>This request will update the QOS entry with a Linked queue entry to a OVSDB Node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:35.536353" elapsed="0.872466"/>
</test>
<test id="s1-s4-t25" name="Get QOS Config Topology with port" line="207">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:36.412162" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:36.411885" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.413485" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.413371" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.413350" elapsed="0.000203"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.418642" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.418526" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.418507" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.419780" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:36.419368" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.420273" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:36.419976" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:36.420343" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:36.420495" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:36.418980" elapsed="0.001539"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.425913" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.425805" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.425786" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.427178" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.427071" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.427054" elapsed="0.000248"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:36.427834" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:36.427459" elapsed="0.000402"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:36.428267" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:36.428032" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:36.458305" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:36.428771" elapsed="0.029635"/>
</kw>
<msg time="2026-04-28T03:05:36.458568" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:36.458613" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.428445" elapsed="0.030204"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:36.499364" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "O "S "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:36.459166" elapsed="0.040376"/>
</kw>
<msg time="2026-04-28T03:05:36.499759" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:36.499806" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.458812" elapsed="0.041031"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.500277" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.499982" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.499925" elapsed="0.000438"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.500867" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "O "S "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:36.500500" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.501236" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.501032" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.501014" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:36.501346" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:36.504037" elapsed="0.000162"/>
</kw>
<msg time="2026-04-28T03:05:36.504260" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:36.502877" elapsed="0.001517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.504660" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.504995" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:36.502239" elapsed="0.002942"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:36.501658" elapsed="0.003586"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:36.426746" elapsed="0.078596"/>
</kw>
<msg time="2026-04-28T03:05:36.505443" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:36.505487" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.426140" elapsed="0.079385"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:36.505709" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:36.505602" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.505585" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.506223" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.506624" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.506695" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:36.425461" elapsed="0.081343"/>
</kw>
<msg time="2026-04-28T03:05:36.506914" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:36.506987" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.420899" elapsed="0.086135"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.507446" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.507130" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.507107" elapsed="0.000427"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:36.420763" elapsed="0.086796"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:36.420579" elapsed="0.087016"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:36.418139" elapsed="0.089547"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:36.413070" elapsed="0.094680"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.412571" elapsed="0.095226"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:36.409873" elapsed="0.097980"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:36.514966" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:36.516232" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1245'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"},"ovsdb:qos-entries":[{"qos-id":"QOS-1","queue-list":[{"queue-number":0}],"qos-other-config":[{"other-config-key":"max-rate","other-config-value":"3300000"}],"qos-type":"ovsdb:qos-type-linux-htb"}],"ovsdb:queues":[{"queue-id":"QUEUE-1","queues-external-ids":[{"queues-external-id-key":"qexid","queues-external-id-value":"qexvalue"}],"dscp":51,"queues-other-config":[{"queue-other-config-key":"min-rate","queue-other-config-value":"1000000"},{"queue-other-config-key":"max-rate","queue-other-config-value":"1230000"}]}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:05:36.516391" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:36.508031" elapsed="0.008396"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.525176" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:36.524080" elapsed="0.001131"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:36.521107" elapsed="0.004152"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.525472" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.525293" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.521078" elapsed="0.004481"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.526035" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        },
                        "ovsdb:qos-entries": [
                            {
                                "qos-id": "QOS-1",
                                "qos-other-config": [
                                    {
                                        "other-config-key": "max-rate",
                                        "other-config-value": "3300000"
                                    }
                                ],
                                "qos-type": "ovsdb:qos-type-linux-htb",
                                "queue-list": [
                                    {
                                        "queue-number": 0
                                    }
                                ]
                            }
                        ],
                        "ovsdb:queues": [
                            {
                                "dscp": 51,
                                "queue-id": "QUEUE-1",
                                "queues-external-ids": [
                                    {
                                        "queues-external-id-key": "qexid",
                                        "queues-external-id-value": "qexvalue"
                                    }
                                ],
                                "queues-other-config": [
                                    {
                                        "queue-other-config-key": "min-rate",
                                        "queue-other-config-value": "1000000"
                                    },
                                    {
                                        "queue-other-config-key": "max-rate",
                                        "queue-other-config-value": "1230000"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:36.525719" elapsed="0.000493"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:36.526266" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:36.516831" elapsed="0.009608"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:36.526604" elapsed="0.002770"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${QOS}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:36.529565" elapsed="0.002706"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the QOS is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:36.409197" elapsed="0.123201"/>
</test>
<test id="s1-s4-t26" name="Get QOS Operational Topology with port" line="217">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:36.536133" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:36.535859" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.537396" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.537285" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.537265" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.541963" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.541839" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.541822" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.543007" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:36.542617" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.543474" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:36.543182" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:36.543542" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:36.543728" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:36.542249" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.549022" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.548900" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.548882" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.550241" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:36.550136" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.550119" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:36.550740" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:36.550442" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:36.551158" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:36.550915" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:36.590609" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:36.551702" elapsed="0.039016"/>
</kw>
<msg time="2026-04-28T03:05:36.590889" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:36.590957" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.551333" elapsed="0.039664"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:36.639755" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "O "S "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:36.591508" elapsed="0.048363"/>
</kw>
<msg time="2026-04-28T03:05:36.640054" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:36.640099" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.591164" elapsed="0.048973"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.640524" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.640289" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.640268" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.641058" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "O "S "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:36.640735" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.641410" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.641203" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.641185" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:36.641518" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:36.644108" elapsed="0.000160"/>
</kw>
<msg time="2026-04-28T03:05:36.644330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:36.642917" elapsed="0.001548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.644729" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.645071" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:36.642316" elapsed="0.003048"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:36.641780" elapsed="0.003648"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:36.549814" elapsed="0.095712"/>
</kw>
<msg time="2026-04-28T03:05:36.645617" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:36.645661" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.549228" elapsed="0.096469"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:36.645879" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:36.645772" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.645755" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.646368" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.646690" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:36.646759" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:36.548563" elapsed="0.098302"/>
</kw>
<msg time="2026-04-28T03:05:36.646971" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:36.647015" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.544142" elapsed="0.102910"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.647365" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.647125" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.647108" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:36.544008" elapsed="0.103455"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:36.543812" elapsed="0.103682"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:36.541486" elapsed="0.106063"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:36.536993" elapsed="0.110643"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:36.536544" elapsed="0.111139"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:36.533702" elapsed="0.114070"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.648252" level="INFO">@{list} = [ QOS-1 ]</msg>
<var>@{list}</var>
<arg>${QOS}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:36.647921" elapsed="0.000357"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:36.662976" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:36.663165" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:36.663273" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:36.656238" elapsed="0.007074"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.668712" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:36.667845" elapsed="0.000909"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:36.665968" elapsed="0.002841"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.669066" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.668846" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.665949" elapsed="0.003225"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.669703" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:36.669357" elapsed="0.000502"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:36.669920" elapsed="0.000061"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:36.663712" elapsed="0.006405"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:36.663393" elapsed="0.006766"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:36.670385" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:36.670193" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:36.663372" elapsed="0.007122"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:36.670675" elapsed="0.000231"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:36.674974" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:36.671375" elapsed="0.003739">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<var name="${i}">QOS-1</var>
<status status="FAIL" start="2026-04-28T03:05:36.671179" elapsed="0.004056">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:36.671002" elapsed="0.004373">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:36.655783" elapsed="0.019758">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:38.699475" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:38.699696" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:38.699863" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:38.692230" elapsed="0.007667"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:38.706584" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:38.705504" elapsed="0.001139"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:38.703009" elapsed="0.003694"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:38.706961" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:38.706742" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:38.702990" elapsed="0.004082"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:38.707620" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:38.707262" elapsed="0.000469"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:38.707793" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:38.700384" elapsed="0.007617"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:38.700032" elapsed="0.008014"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:38.708272" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:38.708079" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:38.700004" elapsed="0.008368"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:38.708558" elapsed="0.000230"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:38.712654" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:38.709285" elapsed="0.003557">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<var name="${i}">QOS-1</var>
<status status="FAIL" start="2026-04-28T03:05:38.709070" elapsed="0.003919">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:38.708867" elapsed="0.004228">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:38.691642" elapsed="0.021611">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:40.734010" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:40.734235" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:40.734352" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:40.725847" elapsed="0.008532"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:40.740230" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:40.739156" elapsed="0.001115"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:40.737070" elapsed="0.003259"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:40.740566" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:40.740365" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:40.737052" elapsed="0.003622"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:40.741241" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:40.740867" elapsed="0.000560"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:40.741492" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:40.734820" elapsed="0.006874"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:40.734475" elapsed="0.007264"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:40.741986" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:40.741773" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:40.734452" elapsed="0.007639"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:40.742279" elapsed="0.000233"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:40.746734" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:40.743013" elapsed="0.003811">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<var name="${i}">QOS-1</var>
<status status="FAIL" start="2026-04-28T03:05:40.742781" elapsed="0.004130">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:40.742599" elapsed="0.004437">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:40.725108" elapsed="0.022046">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:42.769227" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:42.769455" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:42.769639" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:42.760756" elapsed="0.008910"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:42.775710" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:42.774595" elapsed="0.001155"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:42.772395" elapsed="0.003411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:42.776065" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:42.775845" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:42.772377" elapsed="0.003796"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:42.776724" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:42.776355" elapsed="0.000482"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:42.776901" elapsed="0.000070"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:42.770144" elapsed="0.006969"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:42.769772" elapsed="0.007385"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:42.777383" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:42.777191" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:42.769746" elapsed="0.007738"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:42.777665" elapsed="0.000231"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:42.781746" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:42.778400" elapsed="0.003526">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<var name="${i}">QOS-1</var>
<status status="FAIL" start="2026-04-28T03:05:42.778186" elapsed="0.003890">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:42.777998" elapsed="0.004181">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:42.759987" elapsed="0.022351">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:44.804778" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:44.805020" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:44.805141" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:44.797299" elapsed="0.007869"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.810846" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:44.810053" elapsed="0.000822"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:44.808176" elapsed="0.002742"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.811104" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:44.810960" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.808157" elapsed="0.003023"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.811565" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:44.811312" elapsed="0.000413"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:44.811773" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:44.805637" elapsed="0.006275"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:44.805272" elapsed="0.006687"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.812123" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:44.811985" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.805248" elapsed="0.006947"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:44.812324" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.815259" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:44.812856" elapsed="0.002497">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<var name="${i}">QOS-1</var>
<status status="FAIL" start="2026-04-28T03:05:44.812692" elapsed="0.002747">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:44.812551" elapsed="0.002995">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:44.796348" elapsed="0.019321">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<msg time="2026-04-28T03:05:44.815809" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:05:36.648432" elapsed="8.167497">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes to verify the QOS is added to the data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:05:36.532843" elapsed="8.283310">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QOS-1'</status>
</test>
<test id="s1-s4-t27" name="Get Queue Config Topology with port" line="228">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:44.819595" elapsed="0.000232"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:44.819323" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.820891" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:44.820765" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.820746" elapsed="0.000230"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.825473" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:44.825363" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.825346" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.826525" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:44.826143" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.827009" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:44.826702" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:44.827078" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:44.827229" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:44.825757" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.834373" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:44.834264" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.834246" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.835569" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:44.835464" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.835447" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:44.836126" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:44.835796" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:44.836528" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:44.836300" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:44.874978" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:44.837042" elapsed="0.038179"/>
</kw>
<msg time="2026-04-28T03:05:44.875471" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:44.875520" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.836703" elapsed="0.038945"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:44.920127" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "u "e "u "e "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:44.876439" elapsed="0.043826"/>
</kw>
<msg time="2026-04-28T03:05:44.920429" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:44.920475" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.875968" elapsed="0.044543"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.920876" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:44.920617" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.920587" elapsed="0.000400"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.921445" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "u "e "u "e "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:44.921131" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.921809" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:44.921598" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.921580" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:44.921928" elapsed="0.000062"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:44.924574" elapsed="0.000168"/>
</kw>
<msg time="2026-04-28T03:05:44.924804" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:44.923511" elapsed="0.001583"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.925374" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.925696" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:44.922842" elapsed="0.003038"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:44.922270" elapsed="0.003700"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:44.835165" elapsed="0.090907"/>
</kw>
<msg time="2026-04-28T03:05:44.926171" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:44.926215" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.834582" elapsed="0.091671"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:44.926443" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:44.926333" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.926315" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.926954" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.927294" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.927366" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:44.833904" elapsed="0.093572"/>
</kw>
<msg time="2026-04-28T03:05:44.927574" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:44.927618" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.827594" elapsed="0.100087"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.928059" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:44.927758" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.927741" elapsed="0.000398"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:44.827465" elapsed="0.100698"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:44.827302" elapsed="0.100899"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:44.824999" elapsed="0.103264"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:44.820467" elapsed="0.107856"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.820042" elapsed="0.108329"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:44.817356" elapsed="0.111071"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:44.934311" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:44.934501" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1245'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"},"ovsdb:qos-entries":[{"qos-id":"QOS-1","queue-list":[{"queue-number":0}],"qos-other-config":[{"other-config-key":"max-rate","other-config-value":"3300000"}],"qos-type":"ovsdb:qos-type-linux-htb"}],"ovsdb:queues":[{"queue-id":"QUEUE-1","queues-external-ids":[{"queues-external-id-key":"qexid","queues-external-id-value":"qexvalue"}],"dscp":51,"queues-other-config":[{"queue-other-config-key":"min-rate","queue-other-config-value":"1000000"},{"queue-other-config-key":"max-rate","queue-other-config-value":"1230000"}]}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:05:44.934628" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:44.928587" elapsed="0.006070"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.978925" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:44.978060" elapsed="0.000921"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:44.975998" elapsed="0.003041"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:44.979220" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:44.979072" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.975961" elapsed="0.003337"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.979712" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        },
                        "ovsdb:qos-entries": [
                            {
                                "qos-id": "QOS-1",
                                "qos-other-config": [
                                    {
                                        "other-config-key": "max-rate",
                                        "other-config-value": "3300000"
                                    }
                                ],
                                "qos-type": "ovsdb:qos-type-linux-htb",
                                "queue-list": [
                                    {
                                        "queue-number": 0
                                    }
                                ]
                            }
                        ],
                        "ovsdb:queues": [
                            {
                                "dscp": 51,
                                "queue-id": "QUEUE-1",
                                "queues-external-ids": [
                                    {
                                        "queues-external-id-key": "qexid",
                                        "queues-external-id-value": "qexvalue"
                                    }
                                ],
                                "queues-other-config": [
                                    {
                                        "queue-other-config-key": "min-rate",
                                        "queue-other-config-value": "1000000"
                                    },
                                    {
                                        "queue-other-config-key": "max-rate",
                                        "queue-other-config-value": "1230000"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:44.979434" elapsed="0.000470"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:44.979971" elapsed="0.000043"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:44.934930" elapsed="0.045195"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:44.980276" elapsed="0.002292"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${QUEUE}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:44.982721" elapsed="0.002308"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store to verify the Queue is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:44.816664" elapsed="0.168490"/>
</test>
<test id="s1-s4-t28" name="Get Queue Operational Topology with port" line="238">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:44.988521" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:44.988265" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.989778" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:44.989667" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.989647" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:44.994392" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:44.994285" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:44.994268" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.995442" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:44.995063" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:44.995927" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:44.995630" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:44.996014" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:44.996167" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:44.994677" elapsed="0.001514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:45.001454" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:45.001345" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:45.001327" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:45.002673" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:45.002567" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:45.002550" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:45.003204" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:45.002876" elapsed="0.000355"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:45.003647" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:45.003384" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:46.185669" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:45.004177" elapsed="1.181826"/>
</kw>
<msg time="2026-04-28T03:05:46.186277" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:46.186328" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:45.003829" elapsed="1.182537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:46.197356" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "u "e "u "e "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:46.187142" elapsed="0.010332"/>
</kw>
<msg time="2026-04-28T03:05:46.197634" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:46.197680" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:46.186637" elapsed="0.011080"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.198227" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:46.197926" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:46.197897" elapsed="0.000417"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:46.198771" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "Q "u "e "u "e "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "p "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:46.198451" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.199170" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:46.198921" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:46.198903" elapsed="0.000347"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:46.199288" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:46.202015" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:05:46.202243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:46.200837" elapsed="0.001539"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.202640" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.202985" elapsed="0.000097"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:46.200182" elapsed="0.003016"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:46.199608" elapsed="0.003654"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:45.002266" elapsed="1.201093"/>
</kw>
<msg time="2026-04-28T03:05:46.203455" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:46.203499" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:45.001664" elapsed="1.201872"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:46.203737" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:05:46.203621" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:46.203603" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.204239" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.204573" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:46.204643" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:45.001002" elapsed="1.203755"/>
</kw>
<msg time="2026-04-28T03:05:46.204852" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:46.204895" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.996567" elapsed="1.208378"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.205269" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:46.205024" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:46.205007" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:44.996430" elapsed="1.208938"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:44.996249" elapsed="1.209153"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:44.993906" elapsed="1.211553"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:44.989375" elapsed="1.216140"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:44.988928" elapsed="1.216632"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:44.986234" elapsed="1.219415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:46.206144" level="INFO">@{list} = [ QUEUE-1 ]</msg>
<var>@{list}</var>
<arg>${QUEUE}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:46.205807" elapsed="0.000363"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:46.227067" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:46.227514" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:46.227757" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:46.214348" elapsed="0.013467"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:46.237519" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:46.236781" elapsed="0.000767"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:46.233879" elapsed="0.003710"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.237763" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:46.237614" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:46.233839" elapsed="0.004001"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:46.238236" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:46.237986" elapsed="0.000363"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:46.238394" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:46.228781" elapsed="0.009739"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:46.228024" elapsed="0.010527"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:46.238714" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:46.238575" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:46.227980" elapsed="0.010807"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:46.238918" elapsed="0.000195"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:46.241821" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:46.239446" elapsed="0.002467">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<var name="${i}">QUEUE-1</var>
<status status="FAIL" start="2026-04-28T03:05:46.239303" elapsed="0.002715">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:46.239171" elapsed="0.002946">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:46.213882" elapsed="0.028354">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:48.262319" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:48.262602" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:48.262854" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:48.254644" elapsed="0.008248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:48.270714" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:48.269588" elapsed="0.001168"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:48.266970" elapsed="0.003837"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:48.270995" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:48.270834" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:48.266925" elapsed="0.004149"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:48.271462" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:48.271208" elapsed="0.000335"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:48.271589" elapsed="0.000035"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:48.263507" elapsed="0.008217"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:48.263042" elapsed="0.008718"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:48.271924" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:48.271785" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:48.263011" elapsed="0.009002"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:48.272143" elapsed="0.000170"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:48.275060" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:48.272654" elapsed="0.002532">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<var name="${i}">QUEUE-1</var>
<status status="FAIL" start="2026-04-28T03:05:48.272498" elapsed="0.002776">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:48.272369" elapsed="0.002979">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:48.253879" elapsed="0.021583">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:50.295967" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:50.296275" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:50.296447" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:50.289049" elapsed="0.007436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:50.304381" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:50.303273" elapsed="0.001151"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:50.300470" elapsed="0.004015"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:50.304732" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:50.304523" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:50.300444" elapsed="0.004401"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:50.305471" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:50.305097" elapsed="0.000628"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:50.305793" elapsed="0.000037"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:50.297152" elapsed="0.008777"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:50.296619" elapsed="0.009363"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:50.306148" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:50.306007" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:50.296588" elapsed="0.009632"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:50.306351" elapsed="0.000167"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:50.309469" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:50.306861" elapsed="0.002699">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<var name="${i}">QUEUE-1</var>
<status status="FAIL" start="2026-04-28T03:05:50.306707" elapsed="0.002941">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:50.306576" elapsed="0.003176">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:50.288461" elapsed="0.021412">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:52.331609" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:52.331833" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:52.332032" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:52.323378" elapsed="0.008683"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:52.337900" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:52.336780" elapsed="0.001182"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:52.334830" elapsed="0.003192"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:52.338263" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:52.338060" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:52.334811" elapsed="0.003559"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:52.338907" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:52.338553" elapsed="0.000489"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:52.339106" elapsed="0.000052"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:52.332579" elapsed="0.006718"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:52.332213" elapsed="0.007128"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:52.339566" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:52.339374" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:52.332186" elapsed="0.007482"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:52.339851" elapsed="0.000277"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:52.344035" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:52.340674" elapsed="0.003604">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<var name="${i}">QUEUE-1</var>
<status status="FAIL" start="2026-04-28T03:05:52.340446" elapsed="0.003977">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:52.340224" elapsed="0.004305">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:52.322561" elapsed="0.022129">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:54.368754" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.369077" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:05:54.369244" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:54.361826" elapsed="0.007457"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.377422" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:54.376296" elapsed="0.001182"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:54.373558" elapsed="0.003982"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.377783" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.377578" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.373530" elapsed="0.004364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.378478" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:54.378108" elapsed="0.000600"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:54.378775" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:54.369969" elapsed="0.009021"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:54.369443" elapsed="0.009594"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.379324" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.379073" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.369410" elapsed="0.010020"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:05:54.379625" elapsed="0.000242"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.382682" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:05:54.380264" elapsed="0.002516">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<var name="${i}">QUEUE-1</var>
<status status="FAIL" start="2026-04-28T03:05:54.380105" elapsed="0.002762">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:05:54.379963" elapsed="0.003028">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:05:54.361159" elapsed="0.021969">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<msg time="2026-04-28T03:05:54.383249" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:05:46.206325" elapsed="8.177046">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes to verify the Queue is added to the data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:05:44.985506" elapsed="9.398076">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'QUEUE-1'</status>
</test>
<test id="s1-s4-t29" name="Delete a Queue entry from a Qos entry" line="249">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:54.386902" elapsed="0.000256"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:54.386642" elapsed="0.000575"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.388231" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.388118" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.388098" elapsed="0.000203"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.392833" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.392723" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.392702" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.393896" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:54.393507" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.394391" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:54.394094" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:54.394461" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:54.394616" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:54.393136" elapsed="0.001504"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.400147" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.400038" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.400019" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.401422" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.401315" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.401298" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:54.401958" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:54.401625" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.402373" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.402139" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.433427" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:54.402889" elapsed="0.030652"/>
</kw>
<msg time="2026-04-28T03:05:54.433707" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:54.433751" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.402554" elapsed="0.031309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.483158" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "a "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "f "r "o "m "[C "a "[C "Q "o "s "[C "e "n "t "r "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:54.434392" elapsed="0.048927"/>
</kw>
<msg time="2026-04-28T03:05:54.483500" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:54.483546" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.434057" elapsed="0.049527"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.483959" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.483682" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.483656" elapsed="0.000389"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.484510" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "a "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "f "r "o "m "[C "a "[C "Q "o "s "[C "e "n "t "r "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:54.484180" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.484871" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.484656" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.484639" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:54.485009" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.487689" elapsed="0.000166"/>
</kw>
<msg time="2026-04-28T03:05:54.487917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:54.486522" elapsed="0.001557"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.488363" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.488694" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:54.485857" elapsed="0.003024"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:54.485308" elapsed="0.003658"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:54.401009" elapsed="0.088058"/>
</kw>
<msg time="2026-04-28T03:05:54.489163" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.489209" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.400359" elapsed="0.088888"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:54.489444" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:05:54.489327" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.489309" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.489928" elapsed="0.000052"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.490290" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.490369" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:54.399660" elapsed="0.090828"/>
</kw>
<msg time="2026-04-28T03:05:54.490585" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.490630" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.395015" elapsed="0.095654"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.491076" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.490747" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.490729" elapsed="0.000435"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:54.394866" elapsed="0.096322"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:54.394692" elapsed="0.096529"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:54.392359" elapsed="0.098921"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:54.387806" elapsed="0.103531"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.387369" elapsed="0.104023"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:54.384642" elapsed="0.106808"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:54.502613" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1/queue-list=0 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1/queue-list=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.502679" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1/queue-list=0 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.502806" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}/queue-list=0</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:54.491608" elapsed="0.011235"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:54.503103" elapsed="0.003274"/>
</kw>
<doc>This request will Delete a Queue entry from a Qos entry</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:54.384058" elapsed="0.122478"/>
</test>
<test id="s1-s4-t30" name="Delete a QoS entry from a node" line="257">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:54.510817" elapsed="0.000336"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:54.510448" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.512704" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.512540" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.512510" elapsed="0.000298"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.519187" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.518998" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.518972" elapsed="0.000310"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.520492" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:54.520110" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.520988" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:54.520668" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:54.521060" elapsed="0.000145"/>
</return>
<msg time="2026-04-28T03:05:54.521329" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:54.519582" elapsed="0.001772"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.526599" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.526493" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.526475" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.527822" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.527714" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.527697" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:54.528365" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:54.528059" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.528767" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.528541" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.554314" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:54.529379" elapsed="0.025085"/>
</kw>
<msg time="2026-04-28T03:05:54.554631" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:54.554676" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.529023" elapsed="0.025689"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.597979" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "a "[C "Q "o "S "[C "e "n "t "r "y "[C "f "r "o "m "[C "a "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:54.555254" elapsed="0.042837"/>
</kw>
<msg time="2026-04-28T03:05:54.598248" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:54.598292" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.554876" elapsed="0.043452"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.598617" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.598405" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.598385" elapsed="0.000309"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.599203" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "a "[C "Q "o "S "[C "e "n "t "r "y "[C "f "r "o "m "[C "a "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:54.598850" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.599551" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.599346" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.599328" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:54.599661" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.602135" elapsed="0.000169"/>
</kw>
<msg time="2026-04-28T03:05:54.602379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:54.601088" elapsed="0.001428"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.602783" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.603155" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:54.600459" elapsed="0.002885"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:54.599919" elapsed="0.003497"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:54.527413" elapsed="0.076102"/>
</kw>
<msg time="2026-04-28T03:05:54.603607" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.603651" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.526809" elapsed="0.076879"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:54.603872" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:54.603764" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.603746" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.604361" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.604792" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.604864" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:54.526154" elapsed="0.078872"/>
</kw>
<msg time="2026-04-28T03:05:54.605121" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.605164" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.521724" elapsed="0.083476"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.605515" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.605275" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.605258" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:54.521590" elapsed="0.084026"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:54.521413" elapsed="0.084233"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:54.518464" elapsed="0.087233"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:54.512053" elapsed="0.093697"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.511430" elapsed="0.094364"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:54.507635" elapsed="0.098211"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:54.617534" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.617580" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.617668" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${QOS}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:54.606009" elapsed="0.011683"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:54.617847" elapsed="0.005633"/>
</kw>
<doc>This request will Delete a QoS entry from a node.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:54.506859" elapsed="0.116868"/>
</test>
<test id="s1-s4-t31" name="Delete a Queue entry from an ovsdb node" line="265">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:54.629072" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:54.628806" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.630290" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.630182" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.630163" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.634793" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.634688" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.634671" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.635907" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:54.635530" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.636399" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:54.636108" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:54.636468" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:54.636619" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:54.635097" elapsed="0.001546"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.641665" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.641559" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.641541" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.643060" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.642917" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.642899" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:54.643578" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:54.643259" elapsed="0.000345"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.643990" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.643752" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.668132" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:54.644628" elapsed="0.023606"/>
</kw>
<msg time="2026-04-28T03:05:54.668394" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:54.668440" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.644166" elapsed="0.024311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.709397" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "a "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "f "r "o "m "[C "a "n "[C "o "v "s "d "b "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:54.668989" elapsed="0.040523"/>
</kw>
<msg time="2026-04-28T03:05:54.709670" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:54.709714" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.668639" elapsed="0.041111"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.710064" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.709828" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.709808" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.710568" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "a "[C "Q "u "e "u "e "[C "e "n "t "r "y "[C "f "r "o "m "[C "a "n "[C "o "v "s "d "b "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:54.710274" elapsed="0.000371"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.710913" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.710710" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.710693" elapsed="0.000347"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:54.711072" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.713484" elapsed="0.000153"/>
</kw>
<msg time="2026-04-28T03:05:54.713697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:54.712465" elapsed="0.001361"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.714106" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.714424" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:54.711848" elapsed="0.002755"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:54.711333" elapsed="0.003332"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:54.642581" elapsed="0.072182"/>
</kw>
<msg time="2026-04-28T03:05:54.714853" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.714896" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.641871" elapsed="0.073100"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:54.715156" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:54.715051" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.715033" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.715620" elapsed="0.000077"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.716019" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.716090" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:54.641224" elapsed="0.074972"/>
</kw>
<msg time="2026-04-28T03:05:54.716286" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.716328" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.637008" elapsed="0.079356"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.716673" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.716437" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.716420" elapsed="0.000329"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:54.636863" elapsed="0.079908"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:54.636694" elapsed="0.080107"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:54.634338" elapsed="0.082517"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:54.629871" elapsed="0.087037"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.629466" elapsed="0.087503"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:54.625359" elapsed="0.091664"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:54.726245" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.726291" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.726377" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${QUEUE}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:54.717172" elapsed="0.009231"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:54.726557" elapsed="0.002307"/>
</kw>
<doc>This request will Delete a Queue entry from an ovsdb node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:54.624186" elapsed="0.104803"/>
</test>
<test id="s1-s4-t32" name="Delete the OVSDB Node HOST1" line="273">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:54.732162" elapsed="0.000289"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:54.731823" elapsed="0.000705"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.733863" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.733711" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.733684" elapsed="0.000297"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.740237" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.740091" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.740067" elapsed="0.000260"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.741554" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:54.741178" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.742047" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:54.741731" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:54.742117" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:05:54.742268" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:54.740719" elapsed="0.001573"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.748308" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.748198" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.748180" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.749562" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.749453" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.749435" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:54.750163" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:54.749762" elapsed="0.000431"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.750619" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.750370" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.782160" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:54.751260" elapsed="0.031006"/>
</kw>
<msg time="2026-04-28T03:05:54.782435" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:54.782481" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.750824" elapsed="0.031692"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.835646" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[C "H "O "S "T "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:54.783087" elapsed="0.052671"/>
</kw>
<msg time="2026-04-28T03:05:54.835920" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:54.835986" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.782682" elapsed="0.053342"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.836323" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.836103" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.836083" elapsed="0.000319"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.836831" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[C "H "O "S "T "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:54.836532" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.837209" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.837002" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.836983" elapsed="0.000304"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:54.837320" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.839773" elapsed="0.000155"/>
</kw>
<msg time="2026-04-28T03:05:54.840006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:54.838724" elapsed="0.001410"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.840394" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.840710" elapsed="0.000088"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:54.838119" elapsed="0.002788"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:54.837577" elapsed="0.003422"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:54.749135" elapsed="0.091960"/>
</kw>
<msg time="2026-04-28T03:05:54.841186" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.841229" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.748552" elapsed="0.092756"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:54.841495" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:54.841388" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.841369" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.841982" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.842305" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.842375" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:54.747808" elapsed="0.094672"/>
</kw>
<msg time="2026-04-28T03:05:54.842571" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:54.842613" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.742685" elapsed="0.099964"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:54.842989" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:54.842723" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.842706" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:54.742552" elapsed="0.100537"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:54.742379" elapsed="0.100739"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:54.739575" elapsed="0.103595"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:54.733313" elapsed="0.109910"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.732723" elapsed="0.110542"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:54.729644" elapsed="0.113671"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:54.854798" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.854861" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:54.855076" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:54.843461" elapsed="0.011653"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:54.855342" elapsed="0.003363"/>
</kw>
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:54.729185" elapsed="0.129680"/>
</test>
<test id="s1-s4-t33" name="Get Config Topology to verify that deleted configurations are cleaned from config datastore" line="281">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:54.863286" elapsed="0.000306"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:54.862891" elapsed="0.000780"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.865111" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.864928" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.864901" elapsed="0.000311"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.872132" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.872025" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.872007" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.873179" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:54.872778" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:54.873688" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:54.873356" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:54.873758" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:54.873911" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:54.872412" elapsed="0.001539"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.879017" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.878894" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.878862" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:54.880205" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:54.880100" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:54.880083" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:54.880695" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:54.880403" elapsed="0.000318"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.881104" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:54.880866" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:54.917839" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:54.881597" elapsed="0.036367"/>
</kw>
<msg time="2026-04-28T03:05:54.918133" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:54.918179" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.881278" elapsed="0.036937"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.007152" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "a "t "[C "d "e "l "e "t "e "d "[C "c "[78Co "[A[78Cn
 "f "i "g "u "r "a "t "i "o "n "s "[C "a "r "e "[C "c "l "e "a "n "e "d "[C "f "r "o "m "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:54.918707" elapsed="0.088589"/>
</kw>
<msg time="2026-04-28T03:05:55.007457" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:55.007502" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.918376" elapsed="0.089164"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.007838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.007619" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.007599" elapsed="0.000318"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.008369" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "t "o "[C "v "e "r "i "f "y "[C "t "h "a "t "[C "d "e "l "e "t "e "d "[C "c "[78Co "[A[78Cn
 "f "i "g "u "r "a "t "i "o "n "s "[C "a "r "e "[C "c "l "e "a "n "e "d "[C "f "r "o "m "[C "c "o "n "f "i "g "[C "d "a "t "a "s "t "o "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:55.008069" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.008733" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.008529" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.008512" elapsed="0.000298"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:55.008841" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:55.011271" elapsed="0.000155"/>
</kw>
<msg time="2026-04-28T03:05:55.011486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:55.010264" elapsed="0.001353"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.011883" elapsed="0.000092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.012268" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:55.009641" elapsed="0.002806"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:55.009123" elapsed="0.003387"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:54.879768" elapsed="0.132839"/>
</kw>
<msg time="2026-04-28T03:05:55.012697" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:55.012740" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.879223" elapsed="0.133555"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:55.013144" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:05:55.012853" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.012836" elapsed="0.000395"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.013616" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.013971" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:55.014043" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:54.878548" elapsed="0.135601"/>
</kw>
<msg time="2026-04-28T03:05:55.014239" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:55.014281" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.874309" elapsed="0.140008"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.014627" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.014389" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.014373" elapsed="0.000331"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:54.874176" elapsed="0.140550"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:54.874004" elapsed="0.140752"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:54.871499" elapsed="0.143363"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:54.864505" elapsed="0.150446"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:54.863875" elapsed="0.151127"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:54.860001" elapsed="0.155053"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:05:55.020613" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:05:55.020768" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:05:55.020864" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:05:55.015205" elapsed="0.005684"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.025886" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:55.025269" elapsed="0.000646"/>
</kw>
<status status="PASS" start="2026-04-28T03:05:55.023405" elapsed="0.002597"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.026173" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.026030" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.023386" elapsed="0.002863"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.026629" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:55.026381" elapsed="0.000304"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:05:55.026727" elapsed="0.000028"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:05:55.021180" elapsed="0.005700"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:55.027037" elapsed="0.002838"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>ovsdb:HOST1</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:05:55.030122" elapsed="0.003336"/>
</kw>
<doc>This request will fetch the configuration topology from configuration data store to verify OVSDB NODE is deleted frrom the configuration data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:54.859212" elapsed="0.174397"/>
</test>
<test id="s1-s4-t34" name="Check For Bug 4756" line="291">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:55.038085" elapsed="0.000303"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:55.037696" elapsed="0.000769"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:55.039867" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:55.039718" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.039692" elapsed="0.000284"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:55.044643" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:55.044538" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.044520" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.045672" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:55.045299" elapsed="0.000399"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.046161" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:55.045846" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:55.046230" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:55.046383" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:55.044918" elapsed="0.001488"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:55.051647" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:55.051540" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.051522" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:55.052826" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:55.052721" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.052704" elapsed="0.000187"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:55.053345" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:55.053051" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.053738" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:55.053519" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.084026" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:55.054293" elapsed="0.029832"/>
</kw>
<msg time="2026-04-28T03:05:55.084284" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:55.084329" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:55.053964" elapsed="0.030401"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.831832" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:55.084855" elapsed="0.747143"/>
</kw>
<msg time="2026-04-28T03:05:55.832191" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:55.832236" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:55.084529" elapsed="0.747744"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.832635" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.832371" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.832343" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.833225" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:55.832855" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.833568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.833363" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.833346" elapsed="0.000298"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:55.833677" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:55.836168" elapsed="0.000157"/>
</kw>
<msg time="2026-04-28T03:05:55.836386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:55.835164" elapsed="0.001352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.836776" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.837128" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:55.834532" elapsed="0.002776"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:55.833971" elapsed="0.003402"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:55.052424" elapsed="0.785047"/>
</kw>
<msg time="2026-04-28T03:05:55.837564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:55.837608" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:55.051856" elapsed="0.785790"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:55.838056" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:05:55.837722" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.837704" elapsed="0.000441"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.838552" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.838878" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:55.838967" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:55.051202" elapsed="0.787875"/>
</kw>
<msg time="2026-04-28T03:05:55.839168" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:55.839255" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:55.046761" elapsed="0.792532"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.839608" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.839367" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.839350" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:55.046628" elapsed="0.793078"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:55.046457" elapsed="0.793280"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:55.044179" elapsed="0.795613"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:55.039323" elapsed="0.800523"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:55.038671" elapsed="0.801220"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:55.034721" elapsed="0.805243"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:55.849103" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:55.848829" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:55.848810" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.849454" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:05:55.849556" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:05:55.849322" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.850114" level="INFO">Attempting to execute command "grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:55.849723" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.850719" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:05:55.850306" elapsed="0.000438"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:05:55.851694" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:05:55.851769" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:05:55.851414" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:55.851949" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:05:55.853089" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:05:56.710668" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:56 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:04:38 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:05:55.852759" elapsed="0.858071"/>
</kw>
<msg time="2026-04-28T03:05:56.710918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:55.852417" elapsed="0.858599"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:05:55.850965" elapsed="0.860169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.711647" level="INFO">Executing command 'grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:05:56.724378" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:05:56.724646" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:05:56.724770" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:05:56.711381" elapsed="0.013444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:05:56.725232" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.726902" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:56.726188" elapsed="0.000853"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.727535" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:56.727225" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.727172" elapsed="0.000532"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:05:56.728110" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:05:56.727827" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.727793" elapsed="0.000520"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.728392" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:56.735499" elapsed="0.000200"/>
</kw>
<msg time="2026-04-28T03:05:56.735758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:56.734697" elapsed="0.001148"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.736086" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.736302" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:56.729149" elapsed="0.007265"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:05:55.848307" elapsed="0.888233"/>
</kw>
<msg time="2026-04-28T03:05:56.736613" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:55.847747" elapsed="0.888930"/>
</kw>
<msg time="2026-04-28T03:05:56.736831" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:05:55.847125" elapsed="0.889741"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:05:56.737138" elapsed="0.000415"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>SimpleShardDataTreeCohort.*Unexpected failure in validation phase</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:05:55.846545" elapsed="0.891094"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.739298" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:56.738696" elapsed="0.000639"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:05:56.739633" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:05:56.739438" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.739414" elapsed="0.000329"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.739974" elapsed="0.000031"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.740203" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.740437" elapsed="0.000027"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.740661" elapsed="0.000027"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.740878" elapsed="0.000027"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.741115" elapsed="0.000027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.741324" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.741711" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:56.741503" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:05:56.741478" elapsed="0.000337"/>
</if>
<arg>4756</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:05:56.738220" elapsed="0.003662"/>
</kw>
<doc>bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:55.033875" elapsed="1.708088"/>
</test>
<test id="s1-s4-t35" name="Check For Bug 4794" line="299">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:05:56.746245" elapsed="0.000289"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:05:56.745834" elapsed="0.000774"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.747687" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:56.747581" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.747563" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.752463" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:56.752357" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.752339" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.753499" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:05:56.753124" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.753998" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:56.753673" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:05:56.754069" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:05:56.754222" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:05:56.752744" elapsed="0.001503"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.759304" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:56.759198" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.759180" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.760531" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:56.760428" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.760410" elapsed="0.000187"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:05:56.761045" level="INFO">${karaf_connection_index} = 154</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:05:56.760731" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.761435" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:56.761217" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.809812" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:05:56.761925" elapsed="0.048037"/>
</kw>
<msg time="2026-04-28T03:05:56.810135" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:05:56.810180" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:56.761606" elapsed="0.048609"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.845693" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:05:56.810711" elapsed="0.035085"/>
</kw>
<msg time="2026-04-28T03:05:56.845980" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:05:56.846031" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:56.810378" elapsed="0.035689"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.846405" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:56.846191" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.846170" elapsed="0.000314"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.846908" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:56.846614" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.847268" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:56.847064" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.847047" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:05:56.847376" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:56.849738" elapsed="0.000153"/>
</kw>
<msg time="2026-04-28T03:05:56.849980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:56.848750" elapsed="0.001362"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.850373" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.850856" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:56.848153" elapsed="0.002913"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:05:56.847625" elapsed="0.003505"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:05:56.760130" elapsed="0.091096"/>
</kw>
<msg time="2026-04-28T03:05:56.851316" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:56.851358" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:56.759507" elapsed="0.091888"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:05:56.851577" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:05:56.851471" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.851453" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.852066" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.852396" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:05:56.852465" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:05:56.758852" elapsed="0.093718"/>
</kw>
<msg time="2026-04-28T03:05:56.852660" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:05:56.852701" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "1 "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:56.754611" elapsed="0.098125"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.853061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:56.852809" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.852792" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:05:56.754482" elapsed="0.098676"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:05:56.754303" elapsed="0.098885"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:05:56.751997" elapsed="0.101248"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:05:56.747296" elapsed="0.106003"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:05:56.746801" elapsed="0.106542"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:05:56.743080" elapsed="0.110351"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:56.862516" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:56.862262" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:56.862244" elapsed="0.000350"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.862858" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:05:56.862975" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:05:56.862730" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.863515" level="INFO">Attempting to execute command "grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:56.863142" elapsed="0.000419"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.864097" level="INFO">${conn_id} = 160</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:05:56.863706" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:05:56.864999" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:05:56.865080" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:05:56.864707" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:56.865246" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:05:56.866398" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:05:57.222104" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:56 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:05:56 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:05:56.866086" elapsed="0.356190"/>
</kw>
<msg time="2026-04-28T03:05:57.222359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:56.865709" elapsed="0.356730"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:05:56.864327" elapsed="0.358230"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:05:57.223065" level="INFO">Executing command 'grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:05:57.235645" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:05:57.235892" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:05:57.236026" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:05:57.222797" elapsed="0.013283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:05:57.236427" elapsed="0.000457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:57.237974" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:57.237306" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:57.238519" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:57.238238" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:57.238190" elapsed="0.000485"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:05:57.239059" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:05:57.238791" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:57.238757" elapsed="0.000485"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:57.239316" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:57.244709" elapsed="0.000200"/>
</kw>
<msg time="2026-04-28T03:05:57.244997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:57.243987" elapsed="0.001102"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.245299" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.245513" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:57.240010" elapsed="0.005615"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:05:56.861699" elapsed="0.384068"/>
</kw>
<msg time="2026-04-28T03:05:57.245843" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:56.861160" elapsed="0.384746"/>
</kw>
<msg time="2026-04-28T03:05:57.246090" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:05:56.860537" elapsed="0.385588"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:05:57.246521" elapsed="0.000439"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>Shard.*shard-topology-operational An exception occurred while preCommitting transaction</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:05:56.859978" elapsed="0.387076"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:05:57.248652" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:05:57.248088" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:05:57.249009" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:05:57.248790" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:57.248766" elapsed="0.000354"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.249334" elapsed="0.000030"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.249564" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.249818" elapsed="0.000029"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.250073" elapsed="0.000029"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.250292" elapsed="0.000027"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.250503" elapsed="0.000028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.250714" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.251050" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:57.250825" elapsed="0.000297"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:05:57.250803" elapsed="0.000352"/>
</if>
<arg>4794</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:05:57.247593" elapsed="0.003627"/>
</kw>
<doc>bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:05:56.742273" elapsed="0.509008"/>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:05:57.252821" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 ]</msg>
<var>@{uris}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:05:57.252382" elapsed="0.000476"/>
</kw>
<kw name="Suite Teardown" owner="OVSDB">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:57.256432" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:57.256140" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:57.256122" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:57.256781" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:05:57.256883" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:05:57.256653" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:57.257450" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:57.257069" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:57.258045" level="INFO">${conn_id} = 161</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:05:57.257642" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:05:57.258949" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:05:57.259030" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:05:57.258652" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:57.259205" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:05:57.260437" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:05:57.783518" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:05:57.260034" elapsed="0.523645"/>
</kw>
<msg time="2026-04-28T03:05:57.783773" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:57.259676" elapsed="0.524199"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:05:57.258295" elapsed="0.525732"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:05:57.784554" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:05:59.021256" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:05:59.021722" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:05:59.021827" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:05:57.784282" elapsed="1.237602"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:05:59.022398" elapsed="0.000769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.024286" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsconf_br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:59.023578" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:59.024972" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:59.024590" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.024536" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:05:59.025506" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:05:59.025264" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.025230" elapsed="0.000469"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:59.025773" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:59.033638" elapsed="0.000367"/>
</kw>
<msg time="2026-04-28T03:05:59.034249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.032108" elapsed="0.002293"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.034743" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.035123" elapsed="0.000046"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:59.026504" elapsed="0.008807"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:05:57.255637" elapsed="1.779875"/>
</kw>
<msg time="2026-04-28T03:05:59.035627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:57.254853" elapsed="1.780907"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:05:57.254427" elapsed="1.781540"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.039147" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:59.038870" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.038851" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.039500" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:05:59.039603" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:05:59.039365" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.040162" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:59.039769" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.040735" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:05:59.040354" elapsed="0.000406"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.041708" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:05:59.041785" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:05:59.041426" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.041972" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.043236" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:05:59.313348" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:05:59.042796" elapsed="0.270763"/>
</kw>
<msg time="2026-04-28T03:05:59.313664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.042447" elapsed="0.271350"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:05:59.041087" elapsed="0.272907"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.315073" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:05:59.347648" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:05:59.347929" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:05:59.348026" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:05:59.314307" elapsed="0.033754"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:05:59.348530" elapsed="0.000720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.350511" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:59.349803" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:59.351142" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:59.350798" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.350743" elapsed="0.000568"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:05:59.351683" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-28T03:05:59.351435" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.351400" elapsed="0.000485"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:59.351996" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:59.358242" elapsed="0.000151"/>
</kw>
<msg time="2026-04-28T03:05:59.358437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.357594" elapsed="0.000910"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.358654" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.358803" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:59.352745" elapsed="0.006139"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:05:59.038387" elapsed="0.320605"/>
</kw>
<msg time="2026-04-28T03:05:59.359045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.037420" elapsed="0.321683"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:05:59.036350" elapsed="0.322837"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:05:57.254139" elapsed="2.105106"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.361231" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:59.360968" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.360948" elapsed="0.000363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.361580" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:05:59.361682" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:05:59.361449" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.362244" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:59.361847" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.362813" level="INFO">${conn_id} = 163</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:05:59.362435" elapsed="0.000405"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.363684" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:05:59.363761" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:05:59.363406" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.363932" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.365116" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:05:59.675576" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:05:59.364782" elapsed="0.311122"/>
</kw>
<msg time="2026-04-28T03:05:59.676035" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.364422" elapsed="0.311738"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:05:59.363065" elapsed="0.313263"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.677007" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:05:59.699530" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:05:59.699779" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:05:59.699875" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:05:59.676650" elapsed="0.023275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:05:59.700321" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.701907" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:59.701284" elapsed="0.000752"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:59.702516" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:05:59.702218" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.702163" elapsed="0.000517"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:05:59.703064" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:05:59.702795" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.702762" elapsed="0.000491"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:05:59.703326" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:05:59.709785" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:05:59.710002" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.709120" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.710228" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.710391" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:05:59.704024" elapsed="0.006448"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:05:59.360454" elapsed="0.350111"/>
</kw>
<msg time="2026-04-28T03:05:59.710616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.359872" elapsed="0.350804"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:05:59.359430" elapsed="0.351325"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:05:59.712737" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:05:59.712461" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:05:59.712443" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.713108" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:05:59.713211" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:05:59.712972" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.713755" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:05:59.713379" elapsed="0.000422"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.714354" level="INFO">${conn_id} = 164</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:05:59.713962" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:05:59.715305" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:05:59.715383" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:05:59.715005" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.715556" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:05:59.716774" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:00.024815" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:05:59.716431" elapsed="0.308613"/>
</kw>
<msg time="2026-04-28T03:06:00.025168" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.716068" elapsed="0.309238"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:05:59.714586" elapsed="0.310891"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.026170" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:06:00.231023" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:00.231423" level="INFO">${stdout} =  * Exiting ovs-vswitchd (4590)
 * Exiting ovsdb-server (4573)</msg>
<msg time="2026-04-28T03:06:00.231559" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:00.025806" elapsed="0.205811"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:00.232092" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.233782" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:00.233105" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:00.234446" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:00.234141" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.234075" elapsed="0.000533"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:00.235030" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:06:00.234733" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.234696" elapsed="0.000530"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:00.235303" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:00.241811" elapsed="0.000172"/>
</kw>
<msg time="2026-04-28T03:06:00.242028" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.241197" elapsed="0.000897"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.242246" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.242398" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:00.236096" elapsed="0.006386"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:05:59.711984" elapsed="0.530590"/>
</kw>
<msg time="2026-04-28T03:06:00.242628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:05:59.711407" elapsed="0.531280"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:05:59.710959" elapsed="0.531807"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.244849" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:00.244580" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.244561" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.245230" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:00.245426" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:00.245098" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.246036" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:00.245601" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.246630" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:00.246234" elapsed="0.000422"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.247540" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:00.247618" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:00.247255" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.247790" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.249205" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:00.514609" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:00.248658" elapsed="0.266127"/>
</kw>
<msg time="2026-04-28T03:06:00.514893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.248288" elapsed="0.266744"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:00.246865" elapsed="0.268332"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.515777" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:06:00.528352" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:00.528513" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:00.528574" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:00.515480" elapsed="0.013125"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:00.528825" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.530052" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:00.529627" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:00.530548" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:00.530265" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.530217" elapsed="0.000485"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:00.531087" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:06:00.530819" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.530785" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:00.531347" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:00.538192" elapsed="0.000323"/>
</kw>
<msg time="2026-04-28T03:06:00.538610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.537016" elapsed="0.001730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.539112" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.539451" elapsed="0.000045"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:00.532032" elapsed="0.007598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:00.244039" elapsed="0.295792"/>
</kw>
<msg time="2026-04-28T03:06:00.539977" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.243428" elapsed="0.296680"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:00.242975" elapsed="0.297466"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.542793" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:00.542534" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.542516" elapsed="0.000357"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.543156" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:00.543258" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:00.543026" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.543801" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:00.543424" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.544473" level="INFO">${conn_id} = 166</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:00.544007" elapsed="0.000492"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.545551" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:00.545629" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:00.545062" elapsed="0.000591"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.545802" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.546987" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:00.847885" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:00.546647" elapsed="0.301440"/>
</kw>
<msg time="2026-04-28T03:06:00.848190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.546305" elapsed="0.302177"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:00.544706" elapsed="0.303933"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:00.849247" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:06:00.953123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:00.953421" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:06:00.953525" level="INFO">${stderr} = 2026-04-28T03:06:00Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:00Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:00Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:00.848923" elapsed="0.104656"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:00.954003" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.955592" level="INFO">2026-04-28T03:06:00Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:00Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:00Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:00.954909" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:00.956220" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:00.955874" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.955824" elapsed="0.000555"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:00.956731" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-28T03:06:00.956497" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.956463" elapsed="0.000456"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:00.957026" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:00.964712" elapsed="0.000502"/>
</kw>
<msg time="2026-04-28T03:06:00.965274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.963421" elapsed="0.001930"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.965509" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.965666" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:00.957728" elapsed="0.008023"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:00.542053" elapsed="0.423796"/>
</kw>
<msg time="2026-04-28T03:06:00.965905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:00.541481" elapsed="0.424502"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:00.540868" elapsed="0.425199"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:05:57.253680" elapsed="3.712446"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:00.976791" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:00.976840" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:00.966465" elapsed="0.010452"/>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</var>
<status status="PASS" start="2026-04-28T03:06:00.966336" elapsed="0.010652"/>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="PASS" start="2026-04-28T03:06:00.966183" elapsed="0.010841"/>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:00.982362" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:00.982576" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:00.982732" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:00.977472" elapsed="0.005300"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.990444" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:00.989484" elapsed="0.001007"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:00.986717" elapsed="0.003837"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:00.990794" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:00.990592" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:00.986683" elapsed="0.004225"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:00.991504" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:00.991132" elapsed="0.000671"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:00.991874" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:00.983202" elapsed="0.008915"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:00.998872" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node0h0i02vmuovz019pqfxdsb1lpj3.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:00.999186" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:00.999368" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:00.992334" elapsed="0.007075"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.006772" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:01.005651" elapsed="0.001165"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:01.002988" elapsed="0.003889"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.007142" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:01.006914" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.002959" elapsed="0.004299"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.007805" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.007447" elapsed="0.000667"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:01.008195" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:00.999819" elapsed="0.008595"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:06:00.977248" elapsed="0.031240"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:01.008794" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-28T03:06:01.008684" elapsed="0.000281"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:05:57.253210" elapsed="3.755832"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:05:57.252088" elapsed="3.757027"/>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-28T03:04:38.587702" elapsed="82.421455"/>
</suite>
<suite id="s1-s5" name="Configure Exit Ovsdb Node" source="/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot">
<kw name="Suite Setup" owner="OVSDB" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.086121" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:01.082245" elapsed="0.003935"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-28T03:06:01.082021" elapsed="0.004392"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.091014" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:06:01.087481" elapsed="0.003561"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:01.091251" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.091127" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.091104" elapsed="0.000215"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.091823" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:01.091462" elapsed="0.000403"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.092386" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:06:01.092073" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-28T03:06:01.092898" elapsed="0.000303"/>
</kw>
<msg time="2026-04-28T03:06:01.093311" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:01.093359" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.092567" elapsed="0.000815"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.093948" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:01.093551" elapsed="0.000425"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.094949" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:01.094671" elapsed="0.000305"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.095371" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:01.095117" elapsed="0.000279"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.095831" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.095543" elapsed="0.000314"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.098859" elapsed="0.000228"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.099558" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:01.099237" elapsed="0.000346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.099725" elapsed="0.000261"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.100746" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:01.100454" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-28T03:06:01.100815" elapsed="0.000038"/>
</return>
<msg time="2026-04-28T03:06:01.100991" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.100173" elapsed="0.000842"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:01.101593" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.159:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63e6c5490&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:06:01.101163" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.101968" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-28T03:06:01.098315" elapsed="0.003907"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:01.098134" elapsed="0.004131"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-28T03:06:01.095949" elapsed="0.006347"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.102844" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:01.102448" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.103452" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.159'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:01.103054" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.104069" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:01.103645" elapsed="0.000467"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-28T03:06:01.094228" elapsed="0.009941"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-28T03:06:01.087150" elapsed="0.017074"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.104402" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.104289" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.104271" elapsed="0.000197"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.107484" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:01.107094" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.107999" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:01.107661" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:01.108069" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:06:01.108237" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:01.106742" elapsed="0.001519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:01.109278" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.108990" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.110048" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:01.110161" level="INFO">${current_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.109891" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.113707" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:01.113153" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.113134" elapsed="0.000693"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.114308" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:01.114537" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.114031" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.115533" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.114839" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.116905" level="INFO">${conn_id} = 167</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.116001" elapsed="0.000970"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.118681" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:01.118864" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:01.118328" elapsed="0.000580"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.119261" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.120851" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:01.466138" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:56 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:05:57 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:01.120523" elapsed="0.345779"/>
</kw>
<msg time="2026-04-28T03:06:01.466389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.120091" elapsed="0.346475"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:01.117398" elapsed="0.349332"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.467707" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-28T03:06:01.481111" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-28T03:06:01.481543" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:01.481827" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:01.467157" elapsed="0.014901"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.482920" elapsed="0.001426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.487528" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.486032" elapsed="0.001829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.489170" elapsed="0.000129"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.488435" elapsed="0.001053"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.488358" elapsed="0.001219"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:01.490405" elapsed="0.000216"/>
</return>
<status status="PASS" start="2026-04-28T03:06:01.489767" elapsed="0.001065"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.489730" elapsed="0.001195"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.491256" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:01.496400" elapsed="0.000179"/>
</kw>
<msg time="2026-04-28T03:06:01.496631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.495647" elapsed="0.001512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.497517" elapsed="0.000044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.497892" elapsed="0.000056"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.492423" elapsed="0.005615"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:01.112204" elapsed="0.386027"/>
</kw>
<msg time="2026-04-28T03:06:01.498286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.111337" elapsed="0.387000"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:06:01.110841" elapsed="0.387647"/>
</kw>
<msg time="2026-04-28T03:06:01.498530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.110339" elapsed="0.388238"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:01.501675" elapsed="0.000156"/>
</kw>
<msg time="2026-04-28T03:06:01.501874" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.501182" elapsed="0.000771"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.502105" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.502257" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.498867" elapsed="0.003472"/>
</kw>
<msg time="2026-04-28T03:06:01.502429" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-28T03:06:01.109514" elapsed="0.392940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.502871" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.502623" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:01.503015" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-28T03:06:01.108623" elapsed="0.394518"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:01.108446" elapsed="0.394731"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:01.108311" elapsed="0.394900"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-28T03:06:01.104688" elapsed="0.398579"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:06:01.503412" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.517016" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.516835" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.516806" elapsed="0.000285"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.517460" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:01.517599" level="INFO">${current_ssh_connection_object} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.517290" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.518116" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.517807" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.518575" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.518306" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:01.519620" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:06:01.519360" elapsed="0.000397">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-28T03:06:01.519871" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:06:01.519916" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.518825" elapsed="0.001130"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.520260" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:01.520037" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.520018" elapsed="0.000342"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:01.521132" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.520842" elapsed="0.000317"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:06:01.521207" elapsed="0.000115"/>
</return>
<msg time="2026-04-28T03:06:01.521455" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.520573" elapsed="0.000907"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.521628" elapsed="0.000469"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.522662" level="INFO">index=168
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:01.522770" level="INFO">${karaf_connection_object} = index=168
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.522264" elapsed="0.000534"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.522958" elapsed="0.002343"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.525740" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:06:01.685627" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.525462" elapsed="0.160329"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:01.689701" elapsed="0.000271"/>
</kw>
<msg time="2026-04-28T03:06:01.690035" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.689081" elapsed="0.001041"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.690277" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.690428" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.686880" elapsed="0.003630"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:01.686210" elapsed="0.004348"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.516469" elapsed="0.174140"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:01.504374" elapsed="0.186282"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.504009" elapsed="0.186699"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:01.503860" elapsed="0.186888"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-28T03:06:01.503678" elapsed="0.187106"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-28T03:06:01.086706" elapsed="0.604139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.693420" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.693303" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.693280" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.698158" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.698052" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.698034" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.699206" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:01.698792" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.699713" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:01.699396" elapsed="0.000396"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:01.699839" elapsed="0.000037"/>
</return>
<msg time="2026-04-28T03:06:01.700019" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:01.698461" elapsed="0.001584"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.705075" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.704966" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.704923" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.706320" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.706196" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.706178" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:01.706835" level="INFO">${karaf_connection_index} = 168</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.706519" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.707262" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:01.707025" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.742699" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "v "s "[78Cd "[A[78Cb</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:01.707947" elapsed="0.034885"/>
</kw>
<msg time="2026-04-28T03:06:01.742983" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:01.743031" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.707437" elapsed="0.035631"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.819464" level="INFO">"- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "3 "0 "_ "_ "c "o "n "f "i "g "u "r "e "_ "e "x "i "t "_ "o "v "s "d "b "_ "n "o "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:01.743732" elapsed="0.075954"/>
</kw>
<msg time="2026-04-28T03:06:01.819844" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:01.819890" level="INFO">${message_wait} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.743230" elapsed="0.076696"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.820359" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:01.820060" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.820031" elapsed="0.000508"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.821254" level="INFO"> "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "0 "3 "0 "_ "_ "c "o "n "f "i "g "u "r "e "_ "e "x "i "t "_ "o "v "s "d "b "_ "n "o "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.820676" elapsed="0.000671"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.821638" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:01.821414" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.821396" elapsed="0.000411"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:01.821841" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:01.824545" elapsed="0.000171"/>
</kw>
<msg time="2026-04-28T03:06:01.824764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:01.823974" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.825484" elapsed="0.000063"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.825917" elapsed="0.000081"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.823111" elapsed="0.003001"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:01.822158" elapsed="0.004089"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:01.705891" elapsed="0.120456"/>
</kw>
<msg time="2026-04-28T03:06:01.826444" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:01.826489" level="INFO">${message} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.705287" elapsed="0.121240"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:01.828335" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-28T03:06:01.826609" elapsed="0.001794"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.826589" elapsed="0.001838"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.828851" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.829241" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.829315" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:01.704654" elapsed="0.124769"/>
</kw>
<msg time="2026-04-28T03:06:01.829516" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:01.829560" level="INFO">${output} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.700411" elapsed="0.129187"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:01.829915" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:01.829673" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.829656" elapsed="0.000409"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:01.700270" elapsed="0.129818"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:01.700097" elapsed="0.130022"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:01.697738" elapsed="0.132435"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-28T03:06:01.691447" elapsed="0.138781"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.691018" elapsed="0.139252"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-28T03:06:01.081700" elapsed="0.748619"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:01.843282" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:01.843171" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.843152" elapsed="0.000205"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.843651" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:01.843757" level="INFO">${current_ssh_connection_object} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.843500" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.844222" level="INFO">{1: 168}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.843949" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:01.844650" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:01.844408" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.845242" elapsed="0.000186"/>
</kw>
<msg time="2026-04-28T03:06:01.845525" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:01.845570" level="INFO">${old_connection_index} = 168</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.844851" elapsed="0.000741"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:01.846441" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.857656" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:01.847078" elapsed="0.010638"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.846747" elapsed="0.011022"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.858277" elapsed="0.000526"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:01.857954" elapsed="0.000943"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:06:01.845923" elapsed="0.013050"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:01.845667" elapsed="0.013362"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:01.845650" elapsed="0.013406"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:01.859843" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.859567" elapsed="0.000302"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:06:01.859917" elapsed="0.000049"/>
</return>
<msg time="2026-04-28T03:06:01.860091" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:06:01.859274" elapsed="0.000840"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.860267" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.860995" level="INFO">index=169
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:01.861099" level="INFO">${karaf_connection_object} = index=169
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.860855" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.861265" elapsed="0.002145"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:06:01.863852" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:06:02.014173" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:06:01.863588" elapsed="0.150746"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:02.018656" elapsed="0.000170"/>
</kw>
<msg time="2026-04-28T03:06:02.018870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.018073" elapsed="0.000886"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.019112" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.019278" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:02.015874" elapsed="0.003487"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:02.014735" elapsed="0.004674"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:06:01.841566" elapsed="0.177925"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:02.020000" level="INFO">Creating Session using : alias=session, url=http://10.30.170.159:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63e6a9890&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:06:02.019640" elapsed="0.000599"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:02.041106" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:02.041456" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Mon, 27-Apr-2026 03:06:02 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:02.041745" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:02.020675" elapsed="0.021159"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.052835" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:02.052171" elapsed="0.000693"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:02.047773" elapsed="0.005131"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.053096" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.052944" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.047712" elapsed="0.005461"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.053573" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.053320" elapsed="0.000306"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:02.053671" elapsed="0.000046"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:02.042597" elapsed="0.011219"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:02.062257" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:02.062539" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:02.062793" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:02.053978" elapsed="0.008855"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.070889" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:02.069699" elapsed="0.001255"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:02.066784" elapsed="0.004232"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.071286" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.071066" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.066757" elapsed="0.004733"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.072247" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.071820" elapsed="0.000523"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:02.072398" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:02.063277" elapsed="0.009262"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:06:02.020466" elapsed="0.052134"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:01.081389" elapsed="0.991262"/>
</kw>
<test id="s1-s5-t1" name="Create a Topology in OVSDB node" line="26">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:02.076143" elapsed="0.000236"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:02.075851" elapsed="0.000588"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.077475" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:02.077360" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.077337" elapsed="0.000207"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.082515" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:02.082390" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.082357" elapsed="0.000267"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.083783" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:02.083264" elapsed="0.000548"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.084302" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:02.083989" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:02.084385" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:06:02.084542" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:02.082851" elapsed="0.001716"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.090085" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:02.089976" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.089957" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.091327" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:02.091207" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.091190" elapsed="0.000203"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:02.091847" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:02.091544" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.092297" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:02.092065" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.123249" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:02.092793" elapsed="0.030602"/>
</kw>
<msg time="2026-04-28T03:06:02.123659" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:02.123723" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:02.092472" elapsed="0.031301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.167094" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "a "[C "T "o "p "o "l "o "g "y "[C "i "n "[C "O "V "S "D "B "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:02.124439" elapsed="0.042830"/>
</kw>
<msg time="2026-04-28T03:06:02.167491" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:02.167539" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:02.124044" elapsed="0.043533"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.167997" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.167685" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.167655" elapsed="0.000429"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.168572" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "a "[C "T "o "p "o "l "o "g "y "[C "i "n "[C "O "V "S "D "B "[C "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.168222" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.168930" elapsed="0.000104"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.168720" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.168703" elapsed="0.000392"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:02.169131" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:02.171767" elapsed="0.000196"/>
</kw>
<msg time="2026-04-28T03:06:02.172027" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.170623" elapsed="0.001537"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.172423" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.172764" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:02.170001" elapsed="0.002971"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:02.169428" elapsed="0.003610"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:02.090887" elapsed="0.082251"/>
</kw>
<msg time="2026-04-28T03:06:02.173236" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:02.173281" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:02.090299" elapsed="0.083019"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:02.173503" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:02.173395" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.173377" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.173998" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.174334" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.174406" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:02.089627" elapsed="0.084887"/>
</kw>
<msg time="2026-04-28T03:06:02.174608" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:02.174653" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:02.085013" elapsed="0.089678"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.175020" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.174766" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.174750" elapsed="0.000348"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:02.084858" elapsed="0.090264"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:02.084666" elapsed="0.090489"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:02.081988" elapsed="0.093226"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:02.077048" elapsed="0.098224"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:02.076598" elapsed="0.098721"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:02.073303" elapsed="0.102072"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.177563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.177302" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.177283" elapsed="0.000359"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.177912" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:02.178075" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:02.177779" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.178633" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.178245" elapsed="0.000436"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.179233" level="INFO">${conn_id} = 170</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:02.178827" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.180198" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:02.180276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:02.179888" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.180448" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.181644" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:02.455286" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:02.181328" elapsed="0.274186"/>
</kw>
<msg time="2026-04-28T03:06:02.455665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.180923" elapsed="0.274882"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:02.179498" elapsed="0.276582"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.456593" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:02.509741" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:02.510025" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:02.510125" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:02.456359" elapsed="0.053815"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:02.510521" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.512067" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.511429" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.512625" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:02.512338" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.512289" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:02.513162" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:02.512894" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.512861" elapsed="0.000487"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.513421" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:02.520301" elapsed="0.000148"/>
</kw>
<msg time="2026-04-28T03:06:02.520493" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.519156" elapsed="0.001398"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.520702" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.520852" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:02.514116" elapsed="0.006830"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:02.176684" elapsed="0.344355"/>
</kw>
<msg time="2026-04-28T03:06:02.521092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.176125" elapsed="0.345012"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:02.175593" elapsed="0.345685"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.523407" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.523124" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.523106" elapsed="0.000379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.523753" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:02.523854" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:02.523622" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.524413" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovsconf_exit_br" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.524034" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.524988" level="INFO">${conn_id} = 171</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:02.524603" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.525877" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:02.525970" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:02.525602" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.526142" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.527536" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:02.843862" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:02.527207" elapsed="0.316993"/>
</kw>
<msg time="2026-04-28T03:06:02.844309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.526840" elapsed="0.317562"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:02.525221" elapsed="0.319314"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.845030" level="INFO">Executing command 'sudo ovs-vsctl add-br ovsconf_exit_br'.</msg>
<msg time="2026-04-28T03:06:02.898151" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:02.898419" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:02.898522" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:02.844768" elapsed="0.053808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:02.898999" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.900556" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.899911" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.901140" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:02.900821" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.900770" elapsed="0.000533"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:02.901646" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-28T03:06:02.901417" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.901384" elapsed="0.000440"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:02.901895" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:02.908800" elapsed="0.000168"/>
</kw>
<msg time="2026-04-28T03:06:02.909013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.908057" elapsed="0.001017"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.909224" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.909444" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:02.902597" elapsed="0.006937"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:02.522577" elapsed="0.387050"/>
</kw>
<msg time="2026-04-28T03:06:02.909680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.522013" elapsed="0.387713"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-br ${BRIDGE}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:02.521474" elapsed="0.388334"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:02.912105" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:02.911824" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:02.911806" elapsed="0.000377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.912452" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:02.912554" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:02.912320" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.913117" level="INFO">Attempting to execute command "sudo ovs-vsctl add-port ovsconf_exit_br vx1 -- set Interface vx1 type=vxlan options:remote_ip=192.168.1.11" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:02.912720" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.913684" level="INFO">${conn_id} = 172</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:02.913310" elapsed="0.000399"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:02.914814" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:02.914890" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:02.914534" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.915095" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:02.916328" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:03.181406" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:02.916002" elapsed="0.265576"/>
</kw>
<msg time="2026-04-28T03:06:03.181689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.915621" elapsed="0.266169"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:02.914141" elapsed="0.267843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.182594" level="INFO">Executing command 'sudo ovs-vsctl add-port ovsconf_exit_br vx1 -- set Interface vx1 type=vxlan options:remote_ip=192.168.1.11'.</msg>
<msg time="2026-04-28T03:06:03.215466" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:03.215748" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:03.215847" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:03.182278" elapsed="0.033620"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:03.216339" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.217883" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.217247" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.218595" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.218188" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.218138" elapsed="0.000622"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:03.219226" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-28T03:06:03.218974" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.218848" elapsed="0.000500"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.219397" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:03.223896" elapsed="0.000241"/>
</kw>
<msg time="2026-04-28T03:06:03.224201" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.223080" elapsed="0.001210"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.224500" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.224711" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:03.219832" elapsed="0.004993"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:02.911302" elapsed="0.313672"/>
</kw>
<msg time="2026-04-28T03:06:03.225049" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:02.910704" elapsed="0.314410"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-port ${BRIDGE} ${PORT1} -- set Interface ${PORT1} type=vxlan options:remote_ip=192.168.1.11</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:02.910018" elapsed="0.315250"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.228280" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.227881" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.227855" elapsed="0.000537"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.228765" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:03.228910" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:03.228584" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.230019" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.229167" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.230829" level="INFO">${conn_id} = 173</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:03.230295" elapsed="0.000570"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.231908" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:03.232002" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:03.231624" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.232173" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.233342" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:03.512516" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:03.233026" elapsed="0.279680"/>
</kw>
<msg time="2026-04-28T03:06:03.512812" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.232660" elapsed="0.280250"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:03.231235" elapsed="0.281964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.513800" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:06:03.576711" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:03.577079" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:03.577181" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:03.513484" elapsed="0.063748"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:03.577643" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.579300" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.578572" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.579862" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.579571" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.579522" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:03.580428" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-28T03:06:03.580175" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.580141" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.580713" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:03.586432" elapsed="0.000249"/>
</kw>
<msg time="2026-04-28T03:06:03.586773" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.585639" elapsed="0.001230"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.587131" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.587347" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:03.581475" elapsed="0.005986"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:03.227137" elapsed="0.360485"/>
</kw>
<msg time="2026-04-28T03:06:03.587705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.226306" elapsed="0.361465"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:6634</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:03.225583" elapsed="0.362299"/>
</kw>
<doc>Create topology in OVSDB and ready it for further tests</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:02.072717" elapsed="1.515396"/>
</test>
<test id="s1-s5-t2" name="Connect to OVSDB Node" line="35">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:03.592979" elapsed="0.000343"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:03.592506" elapsed="0.000900"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.595123" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.594906" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.594866" elapsed="0.000374"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.600128" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.600013" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.599994" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.601275" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:03.600842" elapsed="0.000461"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.601769" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:03.601460" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:03.601839" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:06:03.602042" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:03.600429" elapsed="0.001641"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.607774" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.607657" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.607637" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.609202" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.609094" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.609076" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:03.609711" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:03.609405" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.610149" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:03.609889" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.641062" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:03.610653" elapsed="0.030573"/>
</kw>
<msg time="2026-04-28T03:06:03.641426" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:03.641473" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.610327" elapsed="0.031184"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.676567" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:03.642126" elapsed="0.034716"/>
</kw>
<msg time="2026-04-28T03:06:03.677187" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:03.677261" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.641715" elapsed="0.035606"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.677914" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.677485" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.677436" elapsed="0.000612"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.678595" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o "n "n "e "c "t "[C "t "o "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.678192" elapsed="0.000666"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.679257" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.678995" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.678967" elapsed="0.000371"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:03.679375" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:03.682056" elapsed="0.000171"/>
</kw>
<msg time="2026-04-28T03:06:03.682291" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.681011" elapsed="0.001417"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.682740" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.683098" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:03.680328" elapsed="0.002963"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:03.679701" elapsed="0.003655"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:03.608765" elapsed="0.074693"/>
</kw>
<msg time="2026-04-28T03:06:03.683561" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:03.683608" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.608023" elapsed="0.075626"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:03.683911" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-28T03:06:03.683797" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.683777" elapsed="0.000252"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.684468" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.684817" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.684890" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:03.607299" elapsed="0.077729"/>
</kw>
<msg time="2026-04-28T03:06:03.685128" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:03.685173" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "o...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.602538" elapsed="0.082672"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.685535" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.685288" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.685271" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:03.602402" elapsed="0.083234"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:03.602213" elapsed="0.083457"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:03.599589" elapsed="0.086140"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:03.594354" elapsed="0.091433"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.593665" elapsed="0.092169"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:03.589509" elapsed="0.096380"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:03.686737" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:03.686906" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:03.686540" elapsed="0.000414"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:03.687380" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:03.687117" elapsed="0.000291"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:03.687791" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:03.687558" elapsed="0.000261"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.688621" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:03.688000" elapsed="0.000650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.689147" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.688814" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.689596" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.689342" elapsed="0.000302"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:03.699660" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:06:03.699772" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:03.699892" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:03.689790" elapsed="0.010130"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.706257" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.702464" elapsed="0.003946"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.711486" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:03.706901" elapsed="0.004613"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:03.706475" elapsed="0.005076"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.702442" elapsed="0.009132"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.711993" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.711718" elapsed="0.000319"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:03.712085" elapsed="0.000039"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:03.700251" elapsed="0.011976"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:03.712370" elapsed="0.002507"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:06:03.686162" elapsed="0.028837"/>
</kw>
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:03.588614" elapsed="0.126527"/>
</test>
<test id="s1-s5-t3" name="Get Operational Topology" line="39">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:03.718385" elapsed="0.000246"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:03.718123" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.719836" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.719699" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.719674" elapsed="0.000238"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.724525" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.724411" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.724393" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.725612" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:03.725210" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.726109" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:03.725792" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:03.726179" elapsed="0.000039"/>
</return>
<msg time="2026-04-28T03:06:03.726344" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:03.724820" elapsed="0.001548"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.732053" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.731915" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.731895" elapsed="0.000230"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.733372" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:03.733265" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.733248" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:03.733880" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:03.733575" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.734312" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:03.734077" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.767634" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:03.734891" elapsed="0.032995"/>
</kw>
<msg time="2026-04-28T03:06:03.768204" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:03.768575" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.734485" elapsed="0.034149"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:03.801282" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:03.769503" elapsed="0.032065"/>
</kw>
<msg time="2026-04-28T03:06:03.801864" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:03.801931" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.768926" elapsed="0.033102"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.802588" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.802178" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.802138" elapsed="0.000593"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.803454" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.802920" elapsed="0.000641"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.803973" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.803657" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.803632" elapsed="0.000452"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:03.804135" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:03.807651" elapsed="0.000167"/>
</kw>
<msg time="2026-04-28T03:06:03.807880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:03.806231" elapsed="0.001799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.808292" elapsed="0.000081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.808618" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:03.805334" elapsed="0.003467"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:03.804534" elapsed="0.004340"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:03.732963" elapsed="0.076027"/>
</kw>
<msg time="2026-04-28T03:06:03.809089" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:03.809133" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.732277" elapsed="0.076896"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:03.809360" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:03.809251" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.809232" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.809847" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.810202" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:03.810280" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:03.731508" elapsed="0.078882"/>
</kw>
<msg time="2026-04-28T03:06:03.810485" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:03.810530" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.726776" elapsed="0.083792"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.810973" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.810715" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.810697" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:03.726609" elapsed="0.084469"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:03.726426" elapsed="0.084684"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:03.724041" elapsed="0.087124"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:03.719389" elapsed="0.091833"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:03.718890" elapsed="0.092379"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:03.715994" elapsed="0.095329"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:03.828648" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:03.828858" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:03.829001" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:03.821233" elapsed="0.007795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.836334" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:03.835274" elapsed="0.001101"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:03.832637" elapsed="0.003795"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.836664" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.836468" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.832611" elapsed="0.004162"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.837332" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:03.836975" elapsed="0.000527"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:03.837564" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:03.829496" elapsed="0.008245"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:03.829108" elapsed="0.008677"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:03.838034" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:03.837819" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:03.829090" elapsed="0.009048"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:03.838323" elapsed="0.000232"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:03.841519" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:03.839073" elapsed="0.002538">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:03.838852" elapsed="0.002848">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:03.838669" elapsed="0.003134">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:03.820770" elapsed="0.021153">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:05.865918" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:05.866188" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:05.866440" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:05.854124" elapsed="0.012387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:05.876996" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:05.876133" elapsed="0.000896"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:05.873464" elapsed="0.003612"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:05.877250" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:05.877105" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:05.873418" elapsed="0.003909"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:05.878059" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:05.877463" elapsed="0.000694"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:05.878210" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:05.867542" elapsed="0.010827"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:05.866727" elapsed="0.011674"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:05.878579" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:05.878430" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:05.866676" elapsed="0.012045"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:05.878861" elapsed="0.000192"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:05.881892" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:05.879431" elapsed="0.002574">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:05.879257" elapsed="0.002838">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:05.879114" elapsed="0.003092">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:05.853360" elapsed="0.028968">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:07.906973" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:07.907210" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:07.907457" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:07.898489" elapsed="0.009010"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:07.916138" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:07.914868" elapsed="0.001317"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:07.911742" elapsed="0.004510"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:07.916510" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:07.916293" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:07.911715" elapsed="0.004910"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:07.917279" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:07.916875" elapsed="0.000515"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:07.917438" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:07.908234" elapsed="0.009349"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:07.907654" elapsed="0.009962"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:07.917779" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:07.917642" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:07.907617" elapsed="0.010293"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:07.918067" elapsed="0.000182"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:07.921393" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:07.918624" elapsed="0.002867">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:07.918455" elapsed="0.003126">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:07.918313" elapsed="0.003387">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:07.897818" elapsed="0.024005">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:09.943789" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:09.944040" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:09.944225" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:09.934957" elapsed="0.009297"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:09.950368" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:09.949231" elapsed="0.001179"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:09.947077" elapsed="0.003393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:09.950707" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:09.950507" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:09.947059" elapsed="0.003756"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:09.951373" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:09.951018" elapsed="0.000483"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:09.951563" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:09.944744" elapsed="0.007021"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:09.944362" elapsed="0.007448"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:09.952053" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:09.951844" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:09.944336" elapsed="0.007874"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:09.952400" elapsed="0.000251"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:09.956817" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:09.953175" elapsed="0.003806">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:09.952949" elapsed="0.004166">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:09.952734" elapsed="0.004544">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:09.934207" elapsed="0.023256">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:11.979864" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:11.980109" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:11.980286" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:11.972894" elapsed="0.007419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.988109" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:11.986996" elapsed="0.001154"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:11.984343" elapsed="0.003864"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:11.988441" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:11.988244" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:11.984318" elapsed="0.004228"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.989099" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:11.988728" elapsed="0.000490"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:11.989281" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:11.980840" elapsed="0.008625"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:11.980410" elapsed="0.009102"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:11.989735" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:11.989546" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:11.980386" elapsed="0.009491"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:11.990084" elapsed="0.000233"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.993578" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:11.990818" elapsed="0.002856">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:11.990572" elapsed="0.003191">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:11.990392" elapsed="0.003471">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:11.972342" elapsed="0.021655">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<msg time="2026-04-28T03:06:11.994112" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:06:03.811517" elapsed="8.182736">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.995499" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:11.995077" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:11.995740" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:11.995601" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:11.995583" elapsed="0.000219"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:06:11.995974" elapsed="0.000210"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.997024" level="FAIL">'5221' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:11.996684" elapsed="0.000397">'5221' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:06:11.997171" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:06:11.996336" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.997679" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:11.997353" elapsed="0.000352"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.998156" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:11.997854" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.998627" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:11.998340" elapsed="0.000312"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.999187" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:06:11.998806" elapsed="0.000473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:11.999657" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:11.999422" elapsed="0.000279"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.000347" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5221'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:06:12.000008" elapsed="0.000386"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:11.999765" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:11.999748" elapsed="0.000703"/>
</if>
<arg>5221</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:06:11.994723" elapsed="0.005771"/>
</kw>
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5221</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:06:03.715397" elapsed="8.285142">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</test>
<test id="s1-s5-t4" name="Verify Bridge Port Not In Config DS" line="50">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.004056" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.003788" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.005274" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.005167" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.005148" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.009823" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.009718" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.009701" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.010884" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.010479" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.011370" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.011077" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.011439" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:06:12.011594" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.010119" elapsed="0.001500"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.016672" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.016567" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.016549" elapsed="0.000189"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.017911" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.017806" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.017788" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.018436" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.018137" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.018859" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.018615" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.049857" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.019373" elapsed="0.030761"/>
</kw>
<msg time="2026-04-28T03:06:12.050399" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.050449" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.019051" elapsed="0.031436"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.100072" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f "y "[C "B "r "i "d "g "e "[C "P "o "r "t "[C "N "o "t "[C "I "n "[C "C "o "n "f "i "g "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.051345" elapsed="0.048861"/>
</kw>
<msg time="2026-04-28T03:06:12.100379" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.100426" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.050804" elapsed="0.049659"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.100851" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.100573" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.100543" elapsed="0.000417"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.101437" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e "r "i "f "y "[C "B "r "i "d "g "e "[C "P "o "r "t "[C "N "o "t "[C "I "n "[C "C "o "n "f "i "g "[C "D "S "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.101108" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.101796" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.101587" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.101569" elapsed="0.000304"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.101909" elapsed="0.000059"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.104746" elapsed="0.000167"/>
</kw>
<msg time="2026-04-28T03:06:12.104991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.103536" elapsed="0.001593"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.105397" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.105721" elapsed="0.000271"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.102856" elapsed="0.003261"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.102247" elapsed="0.003937"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.017476" elapsed="0.088808"/>
</kw>
<msg time="2026-04-28T03:06:12.106379" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.106423" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.016876" elapsed="0.089587"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.106667" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.106545" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.106527" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.107175" elapsed="0.000080"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.107571" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.107643" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.016235" elapsed="0.091520"/>
</kw>
<msg time="2026-04-28T03:06:12.107867" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.107914" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "V "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.011981" elapsed="0.095995"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.108315" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.108056" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.108038" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.011835" elapsed="0.096580"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.011668" elapsed="0.096793"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.009358" elapsed="0.099166"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.004869" elapsed="0.103714"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.004459" elapsed="0.104179"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.001588" elapsed="0.107109"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.109219" level="INFO">@{list} = [ vx1 ]</msg>
<var>@{list}</var>
<arg>${PORT1}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.108858" elapsed="0.000388"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.129773" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.129973" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:12.130075" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.120867" elapsed="0.009233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.140497" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.139096" elapsed="0.001467"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.134793" elapsed="0.005858"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.141051" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.140707" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.134750" elapsed="0.006473"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.142087" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.141511" elapsed="0.000838"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:12.142448" elapsed="0.000066"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:12.130492" elapsed="0.012361"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.130178" elapsed="0.012798"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.143367" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.143052" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.130160" elapsed="0.013341"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:12.143844" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.143810" elapsed="0.000070"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:12.143676" elapsed="0.000225"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:06:12.143558" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.143543" elapsed="0.000413"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:12.144091" elapsed="0.000171"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.144617" elapsed="0.002313"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:06:12.144457" elapsed="0.002531"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:12.144320" elapsed="0.002699"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:06:12.120398" elapsed="0.026676"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:12.109404" elapsed="0.037721"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:12.000930" elapsed="0.146319"/>
</test>
<test id="s1-s5-t5" name="Create bridge of already added bridge" line="61">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.150983" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.150711" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.152209" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.152098" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.152080" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.157194" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.157085" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.157068" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.158285" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.157875" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.158786" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.158464" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.158854" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:06:12.159068" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.157486" elapsed="0.001612"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.164549" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.164423" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.164402" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.165915" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.165797" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.165779" elapsed="0.000233"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.166479" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.166152" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.166988" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.166722" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.222272" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.167499" elapsed="0.054976"/>
</kw>
<msg time="2026-04-28T03:06:12.222657" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.222702" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.167170" elapsed="0.055570"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.269580" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "b "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.223259" elapsed="0.046479"/>
</kw>
<msg time="2026-04-28T03:06:12.269919" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.269986" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.222903" elapsed="0.047121"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.270371" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.270121" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.270094" elapsed="0.000358"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.270960" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "b "r "i "d "g "e "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "b "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.270611" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.271312" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.271108" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.271090" elapsed="0.000297"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.271421" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.274102" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:06:12.274329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.272899" elapsed="0.001567"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.274764" elapsed="0.000078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.275293" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.272279" elapsed="0.003208"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.271719" elapsed="0.003837"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.165489" elapsed="0.110168"/>
</kw>
<msg time="2026-04-28T03:06:12.275752" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.275796" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.164789" elapsed="0.111047"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.276038" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.275912" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.275894" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.276521" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.276856" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.276928" elapsed="0.000032"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.164025" elapsed="0.113028"/>
</kw>
<msg time="2026-04-28T03:06:12.277148" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.277254" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.159487" elapsed="0.117806"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.277612" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.277370" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.277353" elapsed="0.000334"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.159327" elapsed="0.118383"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.159153" elapsed="0.118595"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.156710" elapsed="0.121113"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.151799" elapsed="0.126089"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.151386" elapsed="0.126566"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.148325" elapsed="0.129688"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:12.279040" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_bridge.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:12.279219" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://127.0.0.1:61644/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
                ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_bridge.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:12.278855" elapsed="0.000391"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.279648" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>ovsdb://127.0.0.1:61644</arg>
<arg>ovsdb://${node_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.279394" elapsed="0.000281"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.280076" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>tcp:127.0.0.1:6633</arg>
<arg>tcp:${ODL_SYSTEM_IP}:6633</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.279822" elapsed="0.000281"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.280475" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/br01",
            "ovsdb:bridge-name": "br01",
            "ovsdb:protocol-entry": [
             ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.280250" elapsed="0.000251"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.281115" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-e...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>br01</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.280646" elapsed="0.000496"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.281516" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-e...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.281290" elapsed="0.000252"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.281915" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-e...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>0000000000000001</arg>
<arg>${datapath_id}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.281688" elapsed="0.000267"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.282461" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.282106" elapsed="0.000381"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.283122" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:12.282667" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.283538" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.283294" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.283979" level="INFO">data: {
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000030"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.283722" elapsed="0.000342"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.298356" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '867', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
            "ovsdb:bridge-name": "ovsconf_exit_br",
            "ovsdb:protocol-entry": [
                {
                    "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                }
            ],
            "ovsdb:controller-entry": [
                {
                    "target": "tcp:10.30.170.159:6633"
                }
            ],
            "ovsdb:bridge-other-configs": [
                {
                    "bridge-other-config-key": "datapath-id",
                    "bridge-other-config-value": "0000000000000030"
                }
            ],
            "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:06:12.298411" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.298508" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.284210" elapsed="0.014397"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.307874" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.304129" elapsed="0.003821"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.310071" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:12.308112" elapsed="0.001986"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.307977" elapsed="0.002157"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.304087" elapsed="0.006069"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.310556" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.310294" elapsed="0.000304"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:12.310640" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:12.299255" elapsed="0.011509"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.310903" elapsed="0.002332"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE}</arg>
<arg>0000000000000030</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="PASS" start="2026-04-28T03:06:12.278296" elapsed="0.035001"/>
</kw>
<doc>This will add bridge to the config datastore</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:12.147665" elapsed="0.165747"/>
</test>
<test id="s1-s5-t6" name="Get Config Topology with Bridge" line="69">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.317415" elapsed="0.000217"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.317141" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.318697" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.318585" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.318565" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.323424" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.323319" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.323301" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.324464" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.324086" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.324971" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.324639" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.325041" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:06:12.325193" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.323705" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.330426" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.330318" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.330301" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.331751" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.331645" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.331628" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.332272" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.331971" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.332666" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.332444" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.364452" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.333185" elapsed="0.031516"/>
</kw>
<msg time="2026-04-28T03:06:12.364963" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.365014" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.332840" elapsed="0.032212"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.406008" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.365764" elapsed="0.040493"/>
</kw>
<msg time="2026-04-28T03:06:12.406514" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.406563" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.365305" elapsed="0.041296"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.407101" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.406731" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.406691" elapsed="0.000500"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.407738" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.407332" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.408115" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.407886" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.407868" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.408231" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.410989" elapsed="0.000410"/>
</kw>
<msg time="2026-04-28T03:06:12.411463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.409801" elapsed="0.001798"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.411865" elapsed="0.000097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.412210" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.409151" elapsed="0.003245"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.408556" elapsed="0.003904"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.331345" elapsed="0.081213"/>
</kw>
<msg time="2026-04-28T03:06:12.412651" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.412694" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.330711" elapsed="0.082019"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.412916" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.412807" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.412789" elapsed="0.000303"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.413508" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.413846" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.413916" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.329985" elapsed="0.084056"/>
</kw>
<msg time="2026-04-28T03:06:12.414134" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.414178" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.325580" elapsed="0.088634"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.414550" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.414288" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.414271" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.325448" elapsed="0.089202"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.325273" elapsed="0.089412"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.322960" elapsed="0.091784"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.318264" elapsed="0.096540"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.317827" elapsed="0.097026"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.314662" elapsed="0.100247"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.415409" level="INFO">@{list} = [ ovsconf_exit_br ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.415090" elapsed="0.000345"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.431379" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.431559" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1124'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovsconf_exit_br","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000030"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:12.431665" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.423396" elapsed="0.008295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.436919" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.436240" elapsed="0.000724"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.434338" elapsed="0.002666"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.437175" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.437032" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.434320" elapsed="0.002931"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.437636" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
                        "ovsdb:bridge-name": "ovsconf_exit_br",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000030"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.437382" elapsed="0.000378"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:12.437805" elapsed="0.000033"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:12.432135" elapsed="0.005815"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.431779" elapsed="0.006204"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.438145" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.438007" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.431757" elapsed="0.006460"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:12.438348" elapsed="0.000185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.438895" elapsed="0.002554"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:06:12.438731" elapsed="0.002759"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:12.438592" elapsed="0.002934"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:06:12.422926" elapsed="0.018655"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:12.415597" elapsed="0.026037"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:12.313794" elapsed="0.127965"/>
</test>
<test id="s1-s5-t7" name="Create Port of already added port in OVSDB" line="80">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.444970" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.444706" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.446200" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.446090" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.446071" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.450841" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.450734" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.450716" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.451917" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.451537" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.452408" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.452112" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.452476" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:06:12.452631" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.451169" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.459607" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.459492" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.459474" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.460822" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.460717" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.460700" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.461348" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.461048" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.461749" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.461522" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.494352" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.462261" elapsed="0.032235"/>
</kw>
<msg time="2026-04-28T03:06:12.494686" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.494731" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.461921" elapsed="0.032846"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.553268" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "p "o "r "t "[C "i "n "[C "O "V "S "D "[78CB "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.495449" elapsed="0.057943"/>
</kw>
<msg time="2026-04-28T03:06:12.553555" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.553599" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.495081" elapsed="0.058555"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.553997" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.553732" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.553705" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.554542" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "o "f "[C "a "l "r "e "a "d "y "[C "a "d "d "e "d "[C "p "o "r "t "[C "i "n "[C "O "V "S "D "[78CB "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.554213" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.554891" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.554688" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.554671" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.555029" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.557581" elapsed="0.000163"/>
</kw>
<msg time="2026-04-28T03:06:12.557806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.556503" elapsed="0.001451"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.558217" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.558554" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.555866" elapsed="0.002872"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.555317" elapsed="0.003485"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.460418" elapsed="0.098480"/>
</kw>
<msg time="2026-04-28T03:06:12.559018" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.559118" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.459815" elapsed="0.099341"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.559341" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.559235" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.559216" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.559824" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.560180" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.560251" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.459151" elapsed="0.101208"/>
</kw>
<msg time="2026-04-28T03:06:12.560469" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.560514" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.453025" elapsed="0.107528"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.560905" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.560628" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.560612" elapsed="0.000398"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.452877" elapsed="0.108156"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.452706" elapsed="0.108362"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.450360" elapsed="0.110766"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.445787" elapsed="0.115396"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.445372" elapsed="0.115856"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.442713" elapsed="0.118567"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:12.569253" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:12.569415" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:12.569096" elapsed="0.000344"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.569830" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.569587" elapsed="0.000270"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.570250" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.570020" elapsed="0.000257"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.570794" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.570439" elapsed="0.000380"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.571326" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:12.570981" elapsed="0.000371"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.586570" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '378', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.10"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "vx1",
            "tp-id": "vx1"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:06:12.586621" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.586722" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.571497" elapsed="0.015250"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.586901" elapsed="0.002394"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>10.0.0.10</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_exit_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:06:12.568608" elapsed="0.020750"/>
</kw>
<doc>This will add port/interface to the config datastore</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:12.442098" elapsed="0.147375"/>
</test>
<test id="s1-s5-t8" name="Get Config Topology with Bridge and Port" line="84">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.592695" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.592440" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.593922" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.593811" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.593792" elapsed="0.000253"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.598637" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.598523" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.598505" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.599700" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.599315" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.600193" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.599877" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.600263" elapsed="0.000033"/>
</return>
<msg time="2026-04-28T03:06:12.600421" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.598926" elapsed="0.001519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.605725" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.605614" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.605595" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.607020" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.606886" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.606869" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.607523" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.607220" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.607925" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.607698" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.637797" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.608441" elapsed="0.029586"/>
</kw>
<msg time="2026-04-28T03:06:12.638257" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.638306" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.608119" elapsed="0.030224"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.684718" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[C "a "n "d "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.639065" elapsed="0.045850"/>
</kw>
<msg time="2026-04-28T03:06:12.685130" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.685177" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.638606" elapsed="0.046608"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.685612" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.685328" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.685297" elapsed="0.000399"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.686187" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "C "o "n "f "i "g "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "B "r "i "d "g "e "[C "a "n "d "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.685832" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.686575" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.686341" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.686322" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.686690" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.689550" elapsed="0.000168"/>
</kw>
<msg time="2026-04-28T03:06:12.689780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.688361" elapsed="0.001553"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.690196" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.690535" elapsed="0.000080"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.687684" elapsed="0.003042"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.687115" elapsed="0.003676"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.606587" elapsed="0.084304"/>
</kw>
<msg time="2026-04-28T03:06:12.691007" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.691052" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.605952" elapsed="0.085138"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.691279" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.691169" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.691151" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.691766" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.692129" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.692199" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.605266" elapsed="0.087042"/>
</kw>
<msg time="2026-04-28T03:06:12.692403" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.692445" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.600810" elapsed="0.091675"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.692800" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.692559" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.692542" elapsed="0.000334"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.600676" elapsed="0.092222"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.600501" elapsed="0.092447"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.598148" elapsed="0.094859"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.593523" elapsed="0.099539"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.593112" elapsed="0.099997"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.590462" elapsed="0.102701"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.710378" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.710635" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1294'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']","ovsdb:protocol-entry":[{"protocol":"ovsdb:ovsdb-bridge-protocol-openflow-13"}],"ovsdb:bridge-name":"ovsconf_exit_br","ovsdb:bridge-other-configs":[{"bridge-other-config-key":"datapath-id","bridge-other-config-value":"0000000000000030"}],"ovsdb:controller-entry":[{"target":"tcp:10.30.170.159:6633"}],"termination-point":[{"tp-id":"vx1","ovsdb:options":[{"option":"remote_ip","value":"10.0.0.10"}],"ovsdb:name":"vx1","ovsdb:interface-type":"ovsdb:interface-type-vxlan"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:12.710864" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.701291" elapsed="0.009613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.718780" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.717648" elapsed="0.001176"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.714842" elapsed="0.004041"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.719224" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.718921" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.714815" elapsed="0.004529"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.719915" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb://10.30.170.161:6634/bridge/ovsconf_exit_br",
                        "ovsdb:bridge-name": "ovsconf_exit_br",
                        "ovsdb:bridge-other-configs": [
                            {
                                "bridge-other-config-key": "datapath-id",
                                "bridge-other-config-value": "0000000000000030"
                            }
                        ],
                        "ovsdb:controller-entry": [
                            {
                                "target": "tcp:10.30.170.159:6633"
                            }
                        ],
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
                        "ovsdb:protocol-entry": [
                            {
                                "protocol": "ovsdb:ovsdb-bridge-protocol-openflow-13"
                            }
                        ],
                        "termination-point": [
                            {
                                "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
                                "ovsdb:name": "vx1",
                                "ovsdb:options": [
                                    {
                                        "option": "remote_ip",
                                        "value": "10.0.0.10"
                                    }
                                ],
                                "tp-id": "vx1"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.719540" elapsed="0.000499"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:12.720102" elapsed="0.000045"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:12.711499" elapsed="0.008787"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.711045" elapsed="0.009286"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.720567" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.720366" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.711017" elapsed="0.009656"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:12.720865" elapsed="0.000267"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.721625" elapsed="0.004272"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:06:12.721409" elapsed="0.004569"/>
</iter>
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.726398" elapsed="0.003501"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:06:12.726101" elapsed="0.003876"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:12.721215" elapsed="0.008807"/>
</for>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="PASS" start="2026-04-28T03:06:12.700831" elapsed="0.029272"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${NODE_LIST}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:12.693329" elapsed="0.036852"/>
</kw>
<doc>This will fetch the configuration topology from configuration data store to verify the bridge is added to the data store</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:12.589766" elapsed="0.140621"/>
</test>
<test id="s1-s5-t9" name="Modify the destination IP of Port" line="94">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.733862" elapsed="0.000232"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.733606" elapsed="0.000664"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.735277" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.735166" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.735147" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.740150" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.740042" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.740024" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.741195" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.740801" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.741705" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.741372" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.741775" elapsed="0.000031"/>
</return>
<msg time="2026-04-28T03:06:12.741929" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.740436" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.747125" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.747016" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.746998" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.748370" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.748263" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.748246" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.748865" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.748569" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.749300" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.749058" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.783469" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.749800" elapsed="0.033905"/>
</kw>
<msg time="2026-04-28T03:06:12.783932" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.784009" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.749477" elapsed="0.034570"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.825890" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o "d "i "f "y "[C "t "h "e "[C "d "e "s "t "i "n "a "t "i "o "n "[C "I "P "[C "o "f "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.784695" elapsed="0.041326"/>
</kw>
<msg time="2026-04-28T03:06:12.826183" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.826228" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.784276" elapsed="0.041989"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.826620" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.826374" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.826348" elapsed="0.000353"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.827163" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o "d "i "f "y "[C "t "h "e "[C "d "e "s "t "i "n "a "t "i "o "n "[C "I "P "[C "o "f "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.826834" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.827511" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.827306" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.827289" elapsed="0.000369"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.827695" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.830372" elapsed="0.000168"/>
</kw>
<msg time="2026-04-28T03:06:12.830608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.829235" elapsed="0.001507"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.831024" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.831346" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.828587" elapsed="0.002941"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.828035" elapsed="0.003557"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.747922" elapsed="0.083770"/>
</kw>
<msg time="2026-04-28T03:06:12.831787" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.831831" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.747334" elapsed="0.084534"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.832293" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.831969" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.831928" elapsed="0.000452"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.832777" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.833139" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.833211" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.746664" elapsed="0.086654"/>
</kw>
<msg time="2026-04-28T03:06:12.833412" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.833455" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "M "o...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.742348" elapsed="0.091144"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.833853" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.833572" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.833555" elapsed="0.000417"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.742190" elapsed="0.091810"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.742020" elapsed="0.092012"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.739667" elapsed="0.094422"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.734861" elapsed="0.099286"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.734432" elapsed="0.099763"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.731439" elapsed="0.102812"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:12.842308" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:12.842486" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:12.842123" elapsed="0.000391"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.842905" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.19"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.842665" elapsed="0.000317"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:12.843368" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.19"...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.843137" elapsed="0.000258"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.843902" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.843545" elapsed="0.000384"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.844443" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:12.844093" elapsed="0.000377"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.854445" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '378', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.19"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "vx1",
            "tp-id": "vx1"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:06:12.854518" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.854665" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.844616" elapsed="0.010086"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:12.854959" elapsed="0.003428"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>10.0.0.19</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_exit_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:06:12.841635" elapsed="0.016845"/>
</kw>
<doc>This will modify the dst ip of existing port</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:12.730695" elapsed="0.127949"/>
</test>
<test id="s1-s5-t10" name="Get Operational Topology with modified Port" line="98">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:12.863233" elapsed="0.000286"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:12.862865" elapsed="0.000732"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.864970" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.864791" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.864765" elapsed="0.000302"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.871619" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.871472" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.871448" elapsed="0.000263"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.873101" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:12.872543" elapsed="0.000596"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.873794" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.873350" elapsed="0.000481"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:12.873892" elapsed="0.000061"/>
</return>
<msg time="2026-04-28T03:06:12.874132" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:12.872033" elapsed="0.002134"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.879678" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.879570" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.879552" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.880870" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:12.880765" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.880748" elapsed="0.000251"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:12.881434" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:12.881137" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.881832" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.881610" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.910000" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:12.882386" elapsed="0.027722"/>
</kw>
<msg time="2026-04-28T03:06:12.910293" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:12.910341" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.882030" elapsed="0.028348"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:12.959963" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "m "o "d "i "f "i "e "d "[C "P "o "[78Cr "[A[78Ct
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:12.910921" elapsed="0.049159"/>
</kw>
<msg time="2026-04-28T03:06:12.960241" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:12.960286" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.910565" elapsed="0.049758"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.960613" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.960400" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.960381" elapsed="0.000309"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.961142" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "m "o "d "i "f "i "e "d "[C "P "o "[78Cr "[A[78Ct
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.960823" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.961490" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.961287" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.961270" elapsed="0.000296"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:12.961598" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:12.964049" elapsed="0.000157"/>
</kw>
<msg time="2026-04-28T03:06:12.964265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:12.963016" elapsed="0.001376"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.964654" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.964987" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:12.962403" elapsed="0.002765"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:12.961848" elapsed="0.003382"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:12.880466" elapsed="0.084860"/>
</kw>
<msg time="2026-04-28T03:06:12.965417" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.965460" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.879885" elapsed="0.085612"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:12.965843" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:06:12.965572" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.965555" elapsed="0.000372"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.966375" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.966767" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:12.966838" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:12.879232" elapsed="0.087729"/>
</kw>
<msg time="2026-04-28T03:06:12.967054" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:12.967097" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.874716" elapsed="0.092418"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.967445" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.967207" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.967190" elapsed="0.000330"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:12.874575" elapsed="0.092968"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:12.874243" elapsed="0.093329"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:12.870975" elapsed="0.096649"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:12.864390" elapsed="0.103287"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:12.863792" elapsed="0.103929"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:12.859975" elapsed="0.107797"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.968277" level="INFO">@{list} = [ ovsconf_exit_br | vx1 | 10.0.0.19 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>10.0.0.19</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:12.967915" elapsed="0.000388"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:12.982040" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:12.982281" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:12.982402" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:12.976057" elapsed="0.006371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.988283" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:12.987198" elapsed="0.001126"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.985090" elapsed="0.003334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.988667" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.988462" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.985072" elapsed="0.003703"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.989337" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:12.988984" elapsed="0.000474"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:12.989518" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:12.982804" elapsed="0.006889"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:12.982504" elapsed="0.007231"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:12.989982" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:12.989769" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:12.982486" elapsed="0.007599"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:12.990286" elapsed="0.000232"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:12.994321" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:12.990983" elapsed="0.003503">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:12.990766" elapsed="0.003828">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:12.990591" elapsed="0.004080">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:12.975612" elapsed="0.019175">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:15.499281" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:15.499875" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:15.500252" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:15.008300" elapsed="0.492016"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:15.510106" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:15.508957" elapsed="0.001192"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:15.506302" elapsed="0.003905"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:15.510447" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:15.510245" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:15.506276" elapsed="0.004279"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:15.511120" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:15.510743" elapsed="0.000575"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:15.511383" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:15.501410" elapsed="0.010161"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:15.500535" elapsed="0.011079"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:15.511843" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:15.511649" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:15.500483" elapsed="0.011483"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:15.512156" elapsed="0.000235"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:15.516272" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:15.512868" elapsed="0.003529">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:15.512657" elapsed="0.003860">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:15.512472" elapsed="0.004193">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:15.007557" elapsed="0.509275">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:17.538386" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:17.538700" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:17.538963" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:17.531012" elapsed="0.007993"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:17.547056" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:17.545892" elapsed="0.001206"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:17.543263" elapsed="0.003892"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:17.547395" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:17.547195" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:17.543237" elapsed="0.004267"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:17.548107" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:17.547696" elapsed="0.000534"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:17.548294" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:17.539623" elapsed="0.008862"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:17.539140" elapsed="0.009388"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:17.548765" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:17.548562" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:17.539107" elapsed="0.009767"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:17.549041" elapsed="0.000173"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:17.551996" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:17.549570" elapsed="0.002541">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:17.549409" elapsed="0.002792">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:17.549272" elapsed="0.003041">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:17.530431" elapsed="0.022002">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:19.577440" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:19.577743" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:19.578021" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:19.569296" elapsed="0.008767"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:19.585909" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:19.584713" elapsed="0.001261"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:19.581968" elapsed="0.004066"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:19.586278" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:19.586072" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:19.581921" elapsed="0.004469"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:19.586999" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:19.586591" elapsed="0.000572"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:19.587231" elapsed="0.000054"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:19.578692" elapsed="0.008738"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:19.578199" elapsed="0.009275"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:19.587706" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:19.587509" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:19.578166" elapsed="0.009699"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:19.588035" elapsed="0.000177"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:19.591447" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:19.588655" elapsed="0.002893">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:19.588443" elapsed="0.003198">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:19.588275" elapsed="0.003468">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:19.568685" elapsed="0.023180">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:21.612673" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:21.613007" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:21.613251" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:21.605691" elapsed="0.007598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.620858" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:21.619741" elapsed="0.001158"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:21.617120" elapsed="0.003856"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.621213" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.621013" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.617095" elapsed="0.004226"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.621859" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:21.621505" elapsed="0.000497"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:21.622066" elapsed="0.000078"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:21.613897" elapsed="0.008388"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:21.613422" elapsed="0.008906"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.622553" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.622361" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.613390" elapsed="0.009304"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:21.622882" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.627104" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:21.623611" elapsed="0.003621">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:21.623402" elapsed="0.003952">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:21.623218" elapsed="0.004310">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:21.605132" elapsed="0.022563">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<msg time="2026-04-28T03:06:21.627854" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:06:12.968459" elapsed="8.659612">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.629786" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:21.629205" elapsed="0.000619"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:21.630184" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.629927" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.629903" elapsed="0.000369"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:06:21.630490" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.631976" level="FAIL">'5221' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:21.631497" elapsed="0.000580">'5221' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:06:21.632206" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:06:21.631016" elapsed="0.001223"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.632921" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:21.632463" elapsed="0.000517"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.633591" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:21.633193" elapsed="0.000433"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.634653" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:21.633828" elapsed="0.000863"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.635265" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:06:21.634871" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.635749" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:21.635511" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.636445" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5221'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:06:21.636105" elapsed="0.000388"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:21.635861" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.635843" elapsed="0.000707"/>
</if>
<arg>5221</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:06:21.628703" elapsed="0.007893"/>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5221</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:06:12.859064" elapsed="8.777593">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</test>
<test id="s1-s5-t11" name="Create Port and attach to a Bridge" line="110">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:21.639991" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:21.639719" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.641247" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.641131" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.641112" elapsed="0.000203"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.646283" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.646132" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.646102" elapsed="0.000273"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.647725" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:21.647199" elapsed="0.000564"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.648405" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:21.647997" elapsed="0.000443"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:21.648500" elapsed="0.000042"/>
</return>
<msg time="2026-04-28T03:06:21.648711" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:21.646672" elapsed="0.002072"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.657175" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.657062" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.657042" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.658481" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.658375" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.658358" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:21.659030" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:21.658681" elapsed="0.000375"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:21.659428" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:21.659204" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:21.690377" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:21.659946" elapsed="0.030570"/>
</kw>
<msg time="2026-04-28T03:06:21.690706" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:21.690752" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.659602" elapsed="0.031186"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:21.738110" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:21.691585" elapsed="0.046702"/>
</kw>
<msg time="2026-04-28T03:06:21.738492" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:21.738537" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.691081" elapsed="0.047493"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.739000" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.738687" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.738653" elapsed="0.000432"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.739576" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r "e "a "t "e "[C "P "o "r "t "[C "a "n "d "[C "a "t "t "a "c "h "[C "t "o "[C "a "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:21.739222" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.739925" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.739720" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.739703" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:21.740054" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:21.742686" elapsed="0.000163"/>
</kw>
<msg time="2026-04-28T03:06:21.742911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:21.741556" elapsed="0.001512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.743331" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.743649" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:21.740902" elapsed="0.002927"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:21.740350" elapsed="0.003542"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:21.658016" elapsed="0.085991"/>
</kw>
<msg time="2026-04-28T03:06:21.744102" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:21.744146" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.657391" elapsed="0.086793"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:21.744368" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:21.744261" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.744243" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.744848" elapsed="0.000083"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.745268" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.745339" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:21.656690" elapsed="0.088758"/>
</kw>
<msg time="2026-04-28T03:06:21.745542" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:21.745585" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "r...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.649256" elapsed="0.096365"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.745952" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.745696" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.745679" elapsed="0.000374"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:21.649072" elapsed="0.097005"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:21.648816" elapsed="0.097296"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:21.645590" elapsed="0.100580"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:21.640820" elapsed="0.105407"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.640400" elapsed="0.105873"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:21.637711" elapsed="0.108616"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:21.754275" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_port.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:21.754444" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "192.168.0....</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_port.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:21.754108" elapsed="0.000362"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:21.754860" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.121...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>192.168.0.21</arg>
<arg>${remote_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:21.754618" elapsed="0.000268"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:21.755420" level="INFO">${body} = {
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.121...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>vxlanport</arg>
<arg>${tp_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:21.755187" elapsed="0.000258"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.755964" level="INFO">${node_id_} = 10.30.170.161%3A6634</msg>
<var>${node_id_}</var>
<arg>"""${node_id}""".replace("/","%2F").replace(":","%3A")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:21.755596" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.756481" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:21.756138" elapsed="0.000368"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:21.768460" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '379', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:termination-point": [
        {
            "ovsdb:options": [
                {
                    "ovsdb:option": "remote_ip",
                    "ovsdb:value": "10.0.0.121"
                }
            ],
            "ovsdb:interface-type": "ovsdb:interface-type-vxlan",
            "ovsdb:name": "vx2",
            "tp-id": "vx2"
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:06:21.768531" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:21.768671" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}/termination-point=${tp_name}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:21.756651" elapsed="0.012055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:21.769008" elapsed="0.003252"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT2}</arg>
<arg>10.0.0.121</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsconf_exit_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="PASS" start="2026-04-28T03:06:21.753580" elapsed="0.018768"/>
</kw>
<doc>This request will creates port/interface and attach it to the specific bridge</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:21.637116" elapsed="0.135393"/>
</test>
<test id="s1-s5-t12" name="Get Operational Topology with Port" line="114">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:21.777012" elapsed="0.000291"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:21.776635" elapsed="0.000744"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.778762" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.778604" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.778574" elapsed="0.000290"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.784613" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.784508" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.784490" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.785670" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:21.785294" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.786323" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:21.786018" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:21.786393" elapsed="0.000033"/>
</return>
<msg time="2026-04-28T03:06:21.786549" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:21.784896" elapsed="0.001677"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.791786" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.791678" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.791660" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.793038" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:21.792907" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.792890" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:21.793533" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:21.793237" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:21.793930" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:21.793706" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:21.823618" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:21.794468" elapsed="0.029254"/>
</kw>
<msg time="2026-04-28T03:06:21.823884" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:21.823932" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.794145" elapsed="0.029843"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:21.866236" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:21.824479" elapsed="0.041871"/>
</kw>
<msg time="2026-04-28T03:06:21.866507" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:21.866552" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.824148" elapsed="0.042440"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.866917" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.866702" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.866682" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.867470" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "w "i "t "h "[C "P "o "r "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:21.867158" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.867815" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.867611" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.867594" elapsed="0.000298"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:21.867924" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:21.870428" elapsed="0.000158"/>
</kw>
<msg time="2026-04-28T03:06:21.870646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:21.869345" elapsed="0.001431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.871063" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.871379" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:21.868723" elapsed="0.002835"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:21.868204" elapsed="0.003416"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:21.792610" elapsed="0.079106"/>
</kw>
<msg time="2026-04-28T03:06:21.871806" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:21.871849" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.792043" elapsed="0.079842"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:21.872087" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:21.871980" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.871962" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.872554" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.873018" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:21.873089" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:21.791345" elapsed="0.081849"/>
</kw>
<msg time="2026-04-28T03:06:21.873285" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:21.873328" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.786954" elapsed="0.086409"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.873672" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.873436" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.873420" elapsed="0.000327"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:21.786800" elapsed="0.086969"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:21.786627" elapsed="0.087174"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:21.784152" elapsed="0.089705"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:21.778201" elapsed="0.095708"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:21.777576" elapsed="0.096418"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:21.773777" elapsed="0.100307"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.874575" level="INFO">@{list} = [ ovsconf_exit_br | vx2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:21.874232" elapsed="0.000369"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:21.889680" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:21.890028" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:21.890149" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:21.882478" elapsed="0.007696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.895753" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:21.894728" elapsed="0.001067"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:21.892815" elapsed="0.003036"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.896104" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.895887" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.892798" elapsed="0.003414"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.896740" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:21.896396" elapsed="0.000509"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:21.896986" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:21.890552" elapsed="0.006611"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:21.890251" elapsed="0.006953"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:21.897427" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:21.897238" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:21.890233" elapsed="0.007294"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:21.897707" elapsed="0.000267"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:21.901758" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:21.898424" elapsed="0.003463">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:21.898227" elapsed="0.003842">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:21.898052" elapsed="0.004162">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:21.882046" elapsed="0.020335">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:23.923578" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:23.923886" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:23.924159" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:23.915827" elapsed="0.008373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:23.932538" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:23.931393" elapsed="0.001188"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:23.928707" elapsed="0.003935"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:23.932880" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:23.932680" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:23.928679" elapsed="0.004376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:23.933596" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:23.933242" elapsed="0.000473"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:23.933778" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:23.924847" elapsed="0.009126"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:23.924337" elapsed="0.009668"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:23.934165" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:23.934029" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:23.924304" elapsed="0.009976"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:23.934417" elapsed="0.000170"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:23.937419" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:23.934957" elapsed="0.002558">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:23.934779" elapsed="0.002825">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:23.934644" elapsed="0.003064">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:23.915090" elapsed="0.022738">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:25.958294" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:25.958513" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:25.958688" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:25.950884" elapsed="0.007831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:25.966006" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:25.964870" elapsed="0.001179"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:25.962245" elapsed="0.003861"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:25.966345" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:25.966144" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:25.962220" elapsed="0.004234"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:25.967066" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:25.966642" elapsed="0.000548"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:25.967255" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:25.959312" elapsed="0.008131"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:25.958908" elapsed="0.008580"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:25.967719" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:25.967522" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:25.958793" elapsed="0.009072"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:25.968175" elapsed="0.000379"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:25.973705" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:25.969346" elapsed="0.004458">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:25.969012" elapsed="0.004882">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:25.968678" elapsed="0.005347">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:25.950095" elapsed="0.024055">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:27.995860" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:27.996223" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:27.996460" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:27.988518" elapsed="0.007982"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:28.002962" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:28.002054" elapsed="0.000949"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:28.000005" elapsed="0.003053"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:28.003239" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:28.003089" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:27.999983" elapsed="0.003338"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:28.003720" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:28.003458" elapsed="0.000350"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:28.003855" elapsed="0.000039"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:27.997193" elapsed="0.006847"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:27.996632" elapsed="0.007458"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:28.004314" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:28.004129" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:27.996599" elapsed="0.007860"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:28.004677" elapsed="0.000273"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:28.008616" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:28.005402" elapsed="0.003350">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:28.005232" elapsed="0.003649">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:28.005042" elapsed="0.004015">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:27.987686" elapsed="0.021556">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.028744" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.029004" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:30.029242" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.021493" elapsed="0.007778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.037794" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:30.036501" elapsed="0.001342"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.033627" elapsed="0.004284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.038159" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.037972" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.033599" elapsed="0.004638"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.038639" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.038373" elapsed="0.000353"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:30.038774" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:30.029816" elapsed="0.009100"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.029379" elapsed="0.009587"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.039180" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.038992" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.029354" elapsed="0.009991"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:30.039492" elapsed="0.000185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.043193" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:30.040085" elapsed="0.003248">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="FAIL" start="2026-04-28T03:06:30.039888" elapsed="0.003579">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:06:30.039741" elapsed="0.003881">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:06:30.020666" elapsed="0.023145">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<msg time="2026-04-28T03:06:30.043996" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:06:21.874755" elapsed="8.169430">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.045680" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:30.045104" elapsed="0.000613"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:30.046032" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.045818" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.045793" elapsed="0.000322"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:06:30.046326" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.047507" level="FAIL">'5221' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:30.047153" elapsed="0.000416">'5221' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:06:30.047664" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:06:30.046759" elapsed="0.000930"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.048260" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.047851" elapsed="0.000447"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.048847" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:30.048505" elapsed="0.000369"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.049369" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:30.049057" elapsed="0.000339"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.049956" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:06:30.049562" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.050463" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.050207" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.051219" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5221'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:06:30.050811" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.050577" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.050559" elapsed="0.000811"/>
</if>
<arg>5221</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:06:30.044705" elapsed="0.006729"/>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5221</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:06:21.772920" elapsed="8.278578">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5221

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain 'ovsconf_exit_br'</status>
</test>
<test id="s1-s5-t13" name="Delete the Port1" line="126">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.055413" elapsed="0.000238"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.055150" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.056766" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.056633" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.056613" elapsed="0.000247"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.061827" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.061717" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.061699" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.063115" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.062672" elapsed="0.000472"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.063648" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.063310" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.063722" elapsed="0.000035"/>
</return>
<msg time="2026-04-28T03:06:30.063916" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.062199" elapsed="0.001765"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.069239" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.069114" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.069093" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.070708" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.070595" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.070577" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.071303" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.070970" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.071730" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.071491" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.101442" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.072389" elapsed="0.029290"/>
</kw>
<msg time="2026-04-28T03:06:30.101907" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.101988" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.071913" elapsed="0.030117"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.149061" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.102923" elapsed="0.046376"/>
</kw>
<msg time="2026-04-28T03:06:30.149528" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.149575" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.102354" elapsed="0.047291"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.150105" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.149765" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.149733" elapsed="0.000459"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.150697" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.150329" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.151063" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.150838" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.150820" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.151183" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.153830" elapsed="0.000618"/>
</kw>
<msg time="2026-04-28T03:06:30.154514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.152707" elapsed="0.001939"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.154912" elapsed="0.000097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.155259" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.152071" elapsed="0.003372"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.151488" elapsed="0.004018"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.070202" elapsed="0.085402"/>
</kw>
<msg time="2026-04-28T03:06:30.155699" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.155742" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.069474" elapsed="0.086307"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.155984" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.155858" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.155840" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.156476" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.156872" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.156962" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.068712" elapsed="0.088361"/>
</kw>
<msg time="2026-04-28T03:06:30.157166" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.157210" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.064356" elapsed="0.092891"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.157564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.157321" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.157304" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.064211" elapsed="0.093468"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.064027" elapsed="0.093685"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.061318" elapsed="0.096452"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.056319" elapsed="0.101508"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.055855" elapsed="0.102017"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.052779" elapsed="0.105146"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.174822" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.174909" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT1}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.158114" elapsed="0.016920"/>
</kw>
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.052109" elapsed="0.123125"/>
</test>
<test id="s1-s5-t14" name="Get Operational Topology after deletion of Port1" line="133">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.180926" elapsed="0.000525"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.180360" elapsed="0.001215"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.183866" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.183603" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.183558" elapsed="0.000499"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.190269" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.190159" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.190141" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.191334" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.190929" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.191803" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.191510" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.191873" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:06:30.192048" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.190561" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.197282" elapsed="0.000084"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.197174" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.197156" elapsed="0.000268"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.198610" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.198504" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.198486" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.199134" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.198810" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.199537" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.199308" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.226783" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.200068" elapsed="0.026964"/>
</kw>
<msg time="2026-04-28T03:06:30.227277" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.227326" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.199712" elapsed="0.027652"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.291606" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "d "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.228083" elapsed="0.063656"/>
</kw>
<msg time="2026-04-28T03:06:30.291904" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.291971" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.227618" elapsed="0.064391"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.292368" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.292114" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.292086" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.292898" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "d "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.292589" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.293355" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.293102" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.293080" elapsed="0.000354"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.293471" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.296865" elapsed="0.000205"/>
</kw>
<msg time="2026-04-28T03:06:30.297146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.295653" elapsed="0.001630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.297554" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.298198" elapsed="0.000099"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.294929" elapsed="0.003502"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.293782" elapsed="0.004717"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.198203" elapsed="0.100397"/>
</kw>
<msg time="2026-04-28T03:06:30.298694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.298737" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.197570" elapsed="0.101205"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.299047" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.298919" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.298900" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.299538" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.299873" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.299962" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.196817" elapsed="0.103256"/>
</kw>
<msg time="2026-04-28T03:06:30.300166" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.300209" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.192441" elapsed="0.107805"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.300603" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.300320" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.300303" elapsed="0.000379"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.192306" elapsed="0.108398"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.192128" elapsed="0.108610"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.189754" elapsed="0.111044"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.182917" elapsed="0.117938"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.181910" elapsed="0.118992"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.176598" elapsed="0.124382"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.301456" level="INFO">@{list} = [ vx1 ]</msg>
<var>@{list}</var>
<arg>${PORT1}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.301140" elapsed="0.000343"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.321449" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.321666" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:30.321793" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.313419" elapsed="0.008555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.329525" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:30.328363" elapsed="0.001207"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.325490" elapsed="0.004139"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.330007" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.329666" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.325462" elapsed="0.004650"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.330499" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.330247" elapsed="0.000341"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:30.330631" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:30.322374" elapsed="0.008381"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.322061" elapsed="0.008725"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.330965" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.330813" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.322041" elapsed="0.009001"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:30.331294" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.331260" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:30.331246" elapsed="0.000107"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:06:30.331125" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.331109" elapsed="0.000285"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:30.331529" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:30.332052" elapsed="0.002567"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:06:30.331887" elapsed="0.002772"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:30.331753" elapsed="0.002936"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:06:30.312901" elapsed="0.021841"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:30.301636" elapsed="0.033159"/>
</kw>
<doc>This request will fetch the operational topology after the Port is added to the bridge</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.175673" elapsed="0.159237"/>
</test>
<test id="s1-s5-t15" name="Delete the Port2" line="144">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.337932" elapsed="0.000231"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.337649" elapsed="0.000570"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.339302" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.339195" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.339175" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.343807" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.343702" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.343685" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.344838" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.344463" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.345325" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.345027" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.345395" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:06:30.345545" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.344101" elapsed="0.001468"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.352298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.352190" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.352172" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.354476" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.353393" elapsed="0.001130"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.353375" elapsed="0.001169"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.354993" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.354679" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.355388" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.355167" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.387361" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.355888" elapsed="0.031577"/>
</kw>
<msg time="2026-04-28T03:06:30.387625" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.387670" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.355563" elapsed="0.032143"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.439238" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.388270" elapsed="0.051167"/>
</kw>
<msg time="2026-04-28T03:06:30.439645" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.439692" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.387914" elapsed="0.051814"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.440170" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.439845" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.439811" elapsed="0.000443"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.440748" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.440389" elapsed="0.000432"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.441112" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.440888" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.440871" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.441223" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.443858" elapsed="0.000182"/>
</kw>
<msg time="2026-04-28T03:06:30.444102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.442752" elapsed="0.001482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.444495" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.444813" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.442127" elapsed="0.002891"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.441513" elapsed="0.003569"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.353092" elapsed="0.092087"/>
</kw>
<msg time="2026-04-28T03:06:30.445273" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.445318" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.352505" elapsed="0.092850"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.445539" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.445433" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.445415" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.446051" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.446387" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.446457" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.351835" elapsed="0.094730"/>
</kw>
<msg time="2026-04-28T03:06:30.446655" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.446698" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.345953" elapsed="0.100782"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.447064" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.446809" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.446793" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.345784" elapsed="0.101434"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.345619" elapsed="0.101636"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.343352" elapsed="0.103959"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.338773" elapsed="0.108593"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.338360" elapsed="0.109053"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.335651" elapsed="0.111815"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.464665" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.464774" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br/termination-point=vx2 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}/termination-point=${PORT2}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.447618" elapsed="0.017352"/>
</kw>
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.335133" elapsed="0.130105"/>
</test>
<test id="s1-s5-t16" name="Get Operational Topology after Deletion of Port2" line="151">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.472810" elapsed="0.000502"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.472254" elapsed="0.001180"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.475384" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.475274" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.475255" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.479900" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.479794" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.479777" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.480954" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.480564" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.481428" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.481132" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.481497" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:06:30.481646" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.480199" elapsed="0.001470"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.486744" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.486638" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.486619" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.487920" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.487815" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.487798" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.488446" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.488143" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.488844" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.488620" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.519359" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.489361" elapsed="0.030101"/>
</kw>
<msg time="2026-04-28T03:06:30.519661" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.519707" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.489037" elapsed="0.030707"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.578323" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.520263" elapsed="0.058309"/>
</kw>
<msg time="2026-04-28T03:06:30.578798" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.578845" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.519907" elapsed="0.058976"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.579338" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.579022" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.578985" elapsed="0.000439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.579924" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "P "o "r "t "2 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.579559" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.580302" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.580096" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.580078" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.580416" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.583081" elapsed="0.000168"/>
</kw>
<msg time="2026-04-28T03:06:30.583310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.581932" elapsed="0.001510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.583704" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.584048" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.581304" elapsed="0.002926"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.580733" elapsed="0.003561"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.487518" elapsed="0.096875"/>
</kw>
<msg time="2026-04-28T03:06:30.584486" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.584530" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.486967" elapsed="0.097601"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.584753" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.584645" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.584628" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.585253" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.585589" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.585659" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.486305" elapsed="0.099460"/>
</kw>
<msg time="2026-04-28T03:06:30.585862" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.585905" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.482035" elapsed="0.104094"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.586476" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.586229" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.586211" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.481889" elapsed="0.104688"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.481720" elapsed="0.104890"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.479444" elapsed="0.107250"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.474763" elapsed="0.111989"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.473742" elapsed="0.113056"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.467141" elapsed="0.119710"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.587339" level="INFO">@{list} = [ vx2 ]</msg>
<var>@{list}</var>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.587022" elapsed="0.000343"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.607005" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.607352" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:30.607622" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.599036" elapsed="0.008645"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.619701" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:30.618438" elapsed="0.001292"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.614176" elapsed="0.005594"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.619959" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.619796" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.614136" elapsed="0.005901"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.620420" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.620171" elapsed="0.000391"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:30.620607" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:30.608564" elapsed="0.012170"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.607855" elapsed="0.012909"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.620927" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.620788" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.607815" elapsed="0.013207"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:30.621241" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.621207" elapsed="0.000071"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:30.621192" elapsed="0.000107"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:06:30.621077" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.621061" elapsed="0.000279"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:30.621474" elapsed="0.000169"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:30.622003" elapsed="0.002371"/>
</kw>
<var name="${i}">vx2</var>
<status status="PASS" start="2026-04-28T03:06:30.621834" elapsed="0.002582"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:30.621699" elapsed="0.002748"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:06:30.598561" elapsed="0.025939"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:30.587519" elapsed="0.037034"/>
</kw>
<doc>This request will fetch the operational topology after the Port is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.465655" elapsed="0.159018"/>
</test>
<test id="s1-s5-t17" name="Delete the Bridge" line="162">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.627912" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.627659" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.629154" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.629043" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.629025" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.633691" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.633586" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.633569" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.634742" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.634367" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.635230" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.634917" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.635298" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:06:30.635448" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.633982" elapsed="0.001491"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.640687" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.640580" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.640562" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.641879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.641775" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.641757" elapsed="0.000210"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.642424" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.642102" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.642824" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.642600" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.675229" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.643342" elapsed="0.032067"/>
</kw>
<msg time="2026-04-28T03:06:30.675586" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.675633" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.643019" elapsed="0.032650"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.708780" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.676203" elapsed="0.032686"/>
</kw>
<msg time="2026-04-28T03:06:30.709064" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.709109" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.675839" elapsed="0.033306"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.709447" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.709231" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.709212" elapsed="0.000312"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.709966" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.709653" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.710307" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.710104" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.710087" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.710432" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.712855" elapsed="0.000175"/>
</kw>
<msg time="2026-04-28T03:06:30.713091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.711826" elapsed="0.001405"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.713496" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.713817" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.711221" elapsed="0.002808"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.710679" elapsed="0.003416"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.641476" elapsed="0.072718"/>
</kw>
<msg time="2026-04-28T03:06:30.714285" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.714329" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.640895" elapsed="0.073499"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.714579" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.714473" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.714455" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.715070" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.715399" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.715468" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.640244" elapsed="0.075329"/>
</kw>
<msg time="2026-04-28T03:06:30.715665" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.715707" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.635816" elapsed="0.079928"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.716119" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.715862" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.715845" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.635685" elapsed="0.080532"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.635522" elapsed="0.080724"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.633235" elapsed="0.083064"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.628744" elapsed="0.087609"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.628334" elapsed="0.088062"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.625651" elapsed="0.090797"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.729824" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.729889" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsconf_exit_br 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.716591" elapsed="0.013405"/>
</kw>
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.625084" elapsed="0.105072"/>
</test>
<test id="s1-s5-t18" name="Get Operational Topology after Deletion of Bridge" line="169">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.737520" elapsed="0.000502"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.736918" elapsed="0.001231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.739740" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.739627" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.739608" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.744329" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.744217" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.744199" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.745415" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.745016" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.745892" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.745594" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.745978" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:06:30.746137" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.744623" elapsed="0.001539"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.751310" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.751204" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.751186" elapsed="0.000189"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.752528" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.752422" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.752405" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.753219" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.752727" elapsed="0.000519"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.754520" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.753397" elapsed="0.001220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.784460" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.755122" elapsed="0.029450"/>
</kw>
<msg time="2026-04-28T03:06:30.784738" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.784784" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.754775" elapsed="0.030046"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.835688" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.785354" elapsed="0.050484"/>
</kw>
<msg time="2026-04-28T03:06:30.836035" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.836083" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.785016" elapsed="0.051104"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.836484" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.836223" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.836195" elapsed="0.000372"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.837069" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "B "r "i "d "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.836705" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.837430" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.837223" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.837205" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.837540" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.840181" elapsed="0.000178"/>
</kw>
<msg time="2026-04-28T03:06:30.840421" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.839082" elapsed="0.001473"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.840821" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.841181" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.838408" elapsed="0.002957"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.837839" elapsed="0.003590"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.752122" elapsed="0.089404"/>
</kw>
<msg time="2026-04-28T03:06:30.841621" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.841664" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.751515" elapsed="0.090189"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.841888" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.841781" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.841763" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.842384" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.842730" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.842855" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.750856" elapsed="0.092128"/>
</kw>
<msg time="2026-04-28T03:06:30.843078" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.843127" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.746555" elapsed="0.096610"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.843484" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.843240" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.843223" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.746394" elapsed="0.097190"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.746221" elapsed="0.097397"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.743842" elapsed="0.099834"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.739336" elapsed="0.104399"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.738512" elapsed="0.105270"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.731603" elapsed="0.112236"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.844388" level="INFO">@{list} = [ ovsconf_exit_br | vx1 | vx2 ]</msg>
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.844010" elapsed="0.000404"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.863234" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.863557" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:30.863738" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.856026" elapsed="0.007751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.871723" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:30.870899" elapsed="0.000853"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.868052" elapsed="0.003741"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.871978" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.871819" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.868026" elapsed="0.004066"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.872477" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.872227" elapsed="0.000336"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:30.872607" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:30.864362" elapsed="0.008373"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:30.863894" elapsed="0.008871"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.872928" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.872789" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.863866" elapsed="0.009150"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:30.873236" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.873202" elapsed="0.000071"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:30.873188" elapsed="0.000107"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:06:30.873072" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.873056" elapsed="0.000279"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:30.873467" elapsed="0.000168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:30.873986" elapsed="0.002357"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:06:30.873821" elapsed="0.002563"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:30.876612" elapsed="0.002619"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:06:30.876465" elapsed="0.002807"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:30.879499" elapsed="0.002305"/>
</kw>
<var name="${i}">vx2</var>
<status status="PASS" start="2026-04-28T03:06:30.879354" elapsed="0.002489"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:30.873689" elapsed="0.008183"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:06:30.855498" elapsed="0.026428"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:30.844573" elapsed="0.037426"/>
</kw>
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.730558" elapsed="0.151560"/>
</test>
<test id="s1-s5-t19" name="Delete the OVSDB Node" line="180">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.885143" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.884877" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.886365" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.886256" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.886237" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.890984" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.890851" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.890834" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.892051" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:30.891651" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.892520" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:30.892227" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:30.892589" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:06:30.892741" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:30.891266" elapsed="0.001500"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.898028" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.897905" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.897886" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.899256" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.899150" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.899132" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:30.899758" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:30.899453" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.900172" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.899946" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.931437" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:30.900663" elapsed="0.030879"/>
</kw>
<msg time="2026-04-28T03:06:30.931734" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:30.931791" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.900345" elapsed="0.031482"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:30.965166" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:30.932370" elapsed="0.033015"/>
</kw>
<msg time="2026-04-28T03:06:30.965708" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:30.965756" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.932014" elapsed="0.033787"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.966295" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.965914" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.965882" elapsed="0.000499"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:30.966996" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e "l "e "t "e "[C "t "h "e "[C "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:30.966519" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.967377" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.967160" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.967125" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:30.967493" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:30.970315" elapsed="0.000177"/>
</kw>
<msg time="2026-04-28T03:06:30.970556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:30.969124" elapsed="0.001607"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.971037" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.971366" elapsed="0.000088"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:30.968439" elapsed="0.003126"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:30.967830" elapsed="0.003800"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:30.898819" elapsed="0.072912"/>
</kw>
<msg time="2026-04-28T03:06:30.971829" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.971883" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.898236" elapsed="0.073687"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:30.972131" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-28T03:06:30.972021" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.972002" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.972634" elapsed="0.000033"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.972999" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.973073" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:30.897566" elapsed="0.075621"/>
</kw>
<msg time="2026-04-28T03:06:30.973284" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:30.973329" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "D "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.893129" elapsed="0.080238"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:30.973686" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:30.973442" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.973425" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:30.892997" elapsed="0.080788"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:30.892816" elapsed="0.081003"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.890479" elapsed="0.083399"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.885969" elapsed="0.088036"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.885543" elapsed="0.088509"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.882873" elapsed="0.091235"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:30.983150" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:30.983256" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:30.974264" elapsed="0.009127"/>
</kw>
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.882405" elapsed="0.101269"/>
</test>
<test id="s1-s5-t20" name="Get Operational Topology after Deletion of OVSDB Node" line="187">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:30.991904" elapsed="0.000504"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:30.991330" elapsed="0.001203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.994801" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.994476" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.994434" elapsed="0.000557"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:30.999727" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:30.999621" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:30.999604" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.000844" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:31.000451" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.001354" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:31.001039" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:31.001424" elapsed="0.000032"/>
</return>
<msg time="2026-04-28T03:06:31.001581" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:31.000030" elapsed="0.001574"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.006925" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.006816" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.006797" elapsed="0.000219"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.008169" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.008064" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.008046" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:31.008671" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:31.008371" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.009108" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.008855" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.038903" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:31.009607" elapsed="0.029460"/>
</kw>
<msg time="2026-04-28T03:06:31.039251" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:31.039299" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.009281" elapsed="0.030055"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.098452" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:31.039894" elapsed="0.059034"/>
</kw>
<msg time="2026-04-28T03:06:31.099479" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:31.099594" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.039523" elapsed="0.060159"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.100578" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.099906" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.099843" elapsed="0.000919"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.101858" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e "t "[C "O "p "e "r "a "t "i "o "n "a "l "[C "T "o "p "o "l "o "g "y "[C "a "f "t "e "r "[C "D "e "l "e "t "i "o "n "[C "o "[78Cf "[A[78C
 "O "V "S "D "B "[C "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.101098" elapsed="0.000986"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.102709" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.102238" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.102197" elapsed="0.000710"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:31.103020" elapsed="0.000074"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.107960" elapsed="0.000169"/>
</kw>
<msg time="2026-04-28T03:06:31.108191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.106334" elapsed="0.001991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.108586" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.108914" elapsed="0.000094"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:31.104886" elapsed="0.004234"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:31.103624" elapsed="0.005563"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:31.007741" elapsed="0.101545"/>
</kw>
<msg time="2026-04-28T03:06:31.109382" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:31.109427" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.007163" elapsed="0.102302"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:31.109650" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-28T03:06:31.109542" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.109524" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.110143" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.110477" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.110548" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:31.006286" elapsed="0.104372"/>
</kw>
<msg time="2026-04-28T03:06:31.110755" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:31.110798" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "G "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.001991" elapsed="0.108845"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.111183" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.110926" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.110907" elapsed="0.000471"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:31.001842" elapsed="0.109561"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:31.001668" elapsed="0.109768"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:30.999264" elapsed="0.112231"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:30.993805" elapsed="0.117748"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:30.992844" elapsed="0.118756"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:30.985971" elapsed="0.125683"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.112295" level="INFO">@{list} = [ ovsdb://10.30.170.161:6634 | ovsconf_exit_br | vx1 | vx2 ]</msg>
<var>@{list}</var>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${BRIDGE}</arg>
<arg>${PORT1}</arg>
<arg>${PORT2}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:31.111813" elapsed="0.000508"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:31.135117" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:31.135546" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:31.135817" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:31.123860" elapsed="0.012016"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.145441" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:31.144671" elapsed="0.000800"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:31.142340" elapsed="0.003170"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.145678" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.145536" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.142300" elapsed="0.003454"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.146151" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.145885" elapsed="0.000388"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:31.146317" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:31.136765" elapsed="0.009679"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:31.136090" elapsed="0.010384"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.146636" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.146499" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.136046" elapsed="0.010662"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:31.146960" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.146892" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:31.146877" elapsed="0.000144"/>
</if>
<status status="NOT RUN" start="2026-04-28T03:06:31.146762" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.146747" elapsed="0.000316"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:06:31.147213" elapsed="0.000167"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:31.147715" elapsed="0.002352"/>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="PASS" start="2026-04-28T03:06:31.147567" elapsed="0.002543"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:31.150337" elapsed="0.002336"/>
</kw>
<var name="${i}">ovsconf_exit_br</var>
<status status="PASS" start="2026-04-28T03:06:31.150194" elapsed="0.002519"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:31.152946" elapsed="0.002368"/>
</kw>
<var name="${i}">vx1</var>
<status status="PASS" start="2026-04-28T03:06:31.152791" elapsed="0.002563"/>
</iter>
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:31.155575" elapsed="0.002305"/>
</kw>
<var name="${i}">vx2</var>
<status status="PASS" start="2026-04-28T03:06:31.155432" elapsed="0.002488"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-28T03:06:31.147436" elapsed="0.010528"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
${elements} is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="PASS" start="2026-04-28T03:06:31.123402" elapsed="0.034616"/>
</kw>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:31.112482" elapsed="0.045588"/>
</kw>
<doc>This request will fetch the operational topology after the OVSDB node is deleted</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:30.984377" elapsed="0.173810"/>
</test>
<test id="s1-s5-t21" name="Check For Bug 4756" line="202">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:31.161353" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:31.161102" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.162561" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.162455" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.162437" elapsed="0.000190"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.168918" elapsed="0.000176"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.168810" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.168792" elapsed="0.000367"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.170159" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:31.169764" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.170628" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:31.170335" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:31.170696" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:06:31.170849" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:31.169377" elapsed="0.001496"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.175952" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.175832" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.175814" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.177145" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.177039" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.177022" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:31.177684" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:31.177387" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.178108" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.177861" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.208238" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:31.178609" elapsed="0.029731"/>
</kw>
<msg time="2026-04-28T03:06:31.208498" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:31.208543" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.178283" elapsed="0.030296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.243752" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:31.209102" elapsed="0.034760"/>
</kw>
<msg time="2026-04-28T03:06:31.244047" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:31.244091" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.208740" elapsed="0.035388"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.244426" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.244211" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.244191" elapsed="0.000312"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.244924" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "5 "6 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.244632" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.245286" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.245078" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.245061" elapsed="0.000301"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:31.245394" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.247847" elapsed="0.000186"/>
</kw>
<msg time="2026-04-28T03:06:31.248094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.246764" elapsed="0.001456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.248480" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.248795" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:31.246169" elapsed="0.002827"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:31.245642" elapsed="0.003417"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:31.176712" elapsed="0.072443"/>
</kw>
<msg time="2026-04-28T03:06:31.249246" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:31.249289" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.176159" elapsed="0.073166"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:31.249671" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-28T03:06:31.249399" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.249382" elapsed="0.000376"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.250162" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.250525" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.250596" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:31.175498" elapsed="0.075203"/>
</kw>
<msg time="2026-04-28T03:06:31.250790" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:31.250837" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.171255" elapsed="0.079618"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.251228" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.250960" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.250929" elapsed="0.000376"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:31.171124" elapsed="0.080203"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:31.170924" elapsed="0.080432"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:31.168449" elapsed="0.082960"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:31.162174" elapsed="0.089289"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.161752" elapsed="0.089754"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:31.159126" elapsed="0.092432"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.260669" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.260413" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.260394" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.261031" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:31.261133" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:31.260886" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.261697" level="INFO">Attempting to execute command "grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.261299" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.262297" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:31.261900" elapsed="0.000423"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.263221" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:31.263297" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:31.262906" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.263466" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.264605" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:31.590086" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:56 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:06:01 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:31.264295" elapsed="0.326045"/>
</kw>
<msg time="2026-04-28T03:06:31.590615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.263931" elapsed="0.326832"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:31.262530" elapsed="0.328479"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.591975" level="INFO">Executing command 'grep -c 'SimpleShardDataTreeCohort.*Unexpected failure in validation phase' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:06:31.605128" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:06:31.605401" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:06:31.605499" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:31.591441" elapsed="0.014109"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:31.605929" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.607658" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.606881" elapsed="0.000887"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.608242" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.607983" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.607897" elapsed="0.000447"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:31.608565" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-28T03:06:31.608418" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.608397" elapsed="0.000288"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.608733" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.613283" elapsed="0.000207"/>
</kw>
<msg time="2026-04-28T03:06:31.613549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.612485" elapsed="0.001152"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.613845" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.614082" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:31.609198" elapsed="0.004996"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:31.259832" elapsed="0.354485"/>
</kw>
<msg time="2026-04-28T03:06:31.614389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.259289" elapsed="0.355164"/>
</kw>
<msg time="2026-04-28T03:06:31.614606" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:06:31.258652" elapsed="0.355988"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:06:31.614889" elapsed="0.000434"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>SimpleShardDataTreeCohort.*Unexpected failure in validation phase</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:06:31.258088" elapsed="0.357318"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.616816" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:31.616396" elapsed="0.000447"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:06:31.617078" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:06:31.616917" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.616900" elapsed="0.000258"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.617314" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.617480" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.617652" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.617874" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.618052" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.618214" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.618367" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.618597" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.618446" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:31.618431" elapsed="0.000240"/>
</if>
<arg>4756</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:06:31.616019" elapsed="0.002699"/>
</kw>
<doc>bug 4756 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:31.158478" elapsed="0.460285"/>
</test>
<test id="s1-s5-t22" name="Check For Bug 4794" line="210">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:31.621867" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:31.621613" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.623120" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.623009" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.622991" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.628001" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.627880" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.627862" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.629044" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:31.628648" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.629516" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:31.629223" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:31.629586" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:06:31.629967" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:31.628283" elapsed="0.001711"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.635129" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.635018" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.634997" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.636468" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:31.636354" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.636329" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:31.637007" level="INFO">${karaf_connection_index} = 169</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:31.636672" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.637409" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.637185" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.676604" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:31.637905" elapsed="0.038813"/>
</kw>
<msg time="2026-04-28T03:06:31.676904" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:31.676975" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.637583" elapsed="0.039431"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.710005" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:31.677520" elapsed="0.032649"/>
</kw>
<msg time="2026-04-28T03:06:31.710327" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:31.710373" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.677185" elapsed="0.033225"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.710707" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.710488" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.710468" elapsed="0.000317"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.711240" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h "e "c "k "[C "F "o "r "[C "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.710917" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.711584" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.711378" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.711361" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:31.711712" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:31.714114" elapsed="0.000157"/>
</kw>
<msg time="2026-04-28T03:06:31.714331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.713120" elapsed="0.001340"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.714721" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.715242" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:31.712508" elapsed="0.002917"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:31.711987" elapsed="0.003501"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:31.635991" elapsed="0.079594"/>
</kw>
<msg time="2026-04-28T03:06:31.715706" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:31.715749" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.635339" elapsed="0.080447"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:31.715992" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:31.715863" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.715845" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.716473" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.716805" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:31.716875" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:31.634628" elapsed="0.082372"/>
</kw>
<msg time="2026-04-28T03:06:31.717093" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:31.717136" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "C "o "n "f "i "g "u "r "e "[C "E "x "i "t "[C "O "v "s "d "b "[C "N "o "d "e ". "C "h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.630369" elapsed="0.086803"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.717485" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.717245" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.717228" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:31.630235" elapsed="0.087347"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:31.630054" elapsed="0.087561"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:31.627523" elapsed="0.090147"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:31.622705" elapsed="0.095057"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:31.622288" elapsed="0.095521"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:31.619597" elapsed="0.098264"/>
</kw>
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:31.726898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:31.726644" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:31.726626" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.727264" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:31.727365" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:31.727132" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.727924" level="INFO">Attempting to execute command "grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:31.727531" elapsed="0.000457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.728521" level="INFO">${conn_id} = 175</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:31.728136" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:31.729521" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:31.729597" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:31.729238" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.729767" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:31.730970" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:32.059273" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:56 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:06:31 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:31.730636" elapsed="0.328807"/>
</kw>
<msg time="2026-04-28T03:06:32.059532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.730290" elapsed="0.329327"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:31.728753" elapsed="0.330985"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:32.060284" level="INFO">Executing command 'grep -c 'Shard.*shard-topology-operational An exception occurred while preCommitting transaction' /tmp/karaf-0.24.0/data/log/karaf.log'.</msg>
<msg time="2026-04-28T03:06:32.073376" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-28T03:06:32.073621" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-28T03:06:32.073717" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:32.059993" elapsed="0.013774"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:32.074158" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:32.075675" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:32.075068" elapsed="0.000701"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:32.076296" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:32.075972" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:32.075893" elapsed="0.000561"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:32.076804" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:32.076571" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:32.076538" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:32.077231" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:32.083202" elapsed="0.000201"/>
</kw>
<msg time="2026-04-28T03:06:32.083462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:32.082528" elapsed="0.001016"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.083750" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.083983" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:32.077924" elapsed="0.006191"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:31.726128" elapsed="0.358112"/>
</kw>
<msg time="2026-04-28T03:06:32.084313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:31.725564" elapsed="0.358814"/>
</kw>
<msg time="2026-04-28T03:06:32.084534" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:06:31.724955" elapsed="0.359613"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-28T03:06:32.084810" elapsed="0.000443"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>Shard.*shard-topology-operational An exception occurred while preCommitting transaction</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-04-28T03:06:31.724374" elapsed="0.360965"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:32.086966" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:32.086379" elapsed="0.000625"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-28T03:06:32.087302" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-28T03:06:32.087104" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:32.087080" elapsed="0.000331"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.087624" elapsed="0.000030"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.087852" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.088148" elapsed="0.000039"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.088386" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.088604" elapsed="0.000028"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.088816" elapsed="0.000029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.089051" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.089315" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:32.089165" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:32.089144" elapsed="0.000244"/>
</if>
<arg>4794</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:06:32.085884" elapsed="0.003551"/>
</kw>
<doc>bug 4794 has been seen in the OVSDB Southbound suites. This test case should be one of the last test
case executed.</doc>
<tag>southbound</tag>
<status status="PASS" start="2026-04-28T03:06:31.619000" elapsed="0.470479"/>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:32.090745" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 ]</msg>
<var>@{uris}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:32.090423" elapsed="0.000349"/>
</kw>
<kw name="Suite Teardown" owner="OVSDB">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:32.094040" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:32.093764" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:32.093746" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:32.094396" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:32.094497" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:32.094264" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:32.095058" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:32.094662" elapsed="0.000442"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:32.095632" level="INFO">${conn_id} = 176</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:32.095253" elapsed="0.000405"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:32.096532" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:32.096609" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:32.096252" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:32.096780" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:32.098041" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:32.362285" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:32.097616" elapsed="0.264851"/>
</kw>
<msg time="2026-04-28T03:06:32.362580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:32.097273" elapsed="0.265429"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:32.095863" elapsed="0.267010"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:32.363503" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:06:33.603001" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:33.603346" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:33.603446" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:32.363190" elapsed="1.240312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:33.603925" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:33.605492" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsconf_exit_br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:33.604822" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:33.606256" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:33.605921" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:33.605864" elapsed="0.000551"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:33.606764" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-28T03:06:33.606534" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:33.606499" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:33.607172" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:33.614329" elapsed="0.000221"/>
</kw>
<msg time="2026-04-28T03:06:33.614621" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.613281" elapsed="0.001440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:33.614969" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:33.615199" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:33.607869" elapsed="0.007451"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:32.093286" elapsed="1.522170"/>
</kw>
<msg time="2026-04-28T03:06:33.615539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:32.092512" elapsed="1.523113"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:32.092082" elapsed="1.523657"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:33.618733" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:33.618333" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:33.618304" elapsed="0.000548"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.619277" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:33.619429" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:33.619080" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:33.620262" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:33.619676" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.621115" level="INFO">${conn_id} = 177</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:33.620546" elapsed="0.000608"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:33.622381" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:33.622458" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:33.622036" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.622629" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.623875" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:33.883533" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:33.623465" elapsed="0.260211"/>
</kw>
<msg time="2026-04-28T03:06:33.883758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.623122" elapsed="0.260727"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:33.621488" elapsed="0.262501"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.884476" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:06:33.927400" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:06:33.927726" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:33.927824" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:33.884212" elapsed="0.043663"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:33.928362" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:33.929867" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:33.929258" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:33.930435" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:33.930231" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:33.930183" elapsed="0.000358"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:33.930771" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-28T03:06:33.930617" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:33.930595" elapsed="0.000305"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:33.930971" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:33.935606" elapsed="0.000217"/>
</kw>
<msg time="2026-04-28T03:06:33.935889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.934791" elapsed="0.001241"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:33.936323" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:33.936560" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:33.931434" elapsed="0.005246"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:33.617530" elapsed="0.319282"/>
</kw>
<msg time="2026-04-28T03:06:33.936889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.616683" elapsed="0.320316"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:33.616023" elapsed="0.321094"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:06:32.091757" elapsed="1.845441"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:33.940180" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:33.939759" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:33.939731" elapsed="0.000569"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.940697" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:33.940848" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:33.940506" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:33.941683" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:33.941116" elapsed="0.000636"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.942483" level="INFO">${conn_id} = 178</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:33.941988" elapsed="0.000521"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:33.943342" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:33.943420" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:33.943068" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.943592" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:33.944748" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:34.239292" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:33.944435" elapsed="0.295016"/>
</kw>
<msg time="2026-04-28T03:06:34.239549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.944088" elapsed="0.295577"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:33.942716" elapsed="0.297112"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.240434" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:34.262910" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:34.263193" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:34.263293" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:34.240133" elapsed="0.023211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:34.263692" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:34.265189" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:34.264552" elapsed="0.000738"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:34.265738" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:34.265458" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:34.265411" elapsed="0.000485"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:34.266282" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-28T03:06:34.266049" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:34.266013" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:34.266569" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:34.272701" elapsed="0.000200"/>
</kw>
<msg time="2026-04-28T03:06:34.272986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.272063" elapsed="0.001011"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:34.273284" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:34.273497" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:34.267261" elapsed="0.006350"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:33.939045" elapsed="0.334692"/>
</kw>
<msg time="2026-04-28T03:06:34.273811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:33.938196" elapsed="0.335696"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:33.937476" elapsed="0.336546"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:34.276857" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:34.276471" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:34.276444" elapsed="0.000552"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.277389" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:34.277536" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:34.277203" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:34.278404" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:34.277784" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.279323" level="INFO">${conn_id} = 179</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:34.278766" elapsed="0.000584"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:34.280184" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:34.280260" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:34.279891" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.280431" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.281589" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:34.593104" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:34.281273" elapsed="0.312019"/>
</kw>
<msg time="2026-04-28T03:06:34.593403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.280906" elapsed="0.312622"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:34.279557" elapsed="0.314144"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.594370" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:06:34.859796" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:34.860305" level="INFO">${stdout} =  * Exiting ovs-vswitchd (5925)
 * Exiting ovsdb-server (5903)</msg>
<msg time="2026-04-28T03:06:34.860443" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:34.594047" elapsed="0.266472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:34.861087" elapsed="0.000653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:34.863037" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:34.862251" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:34.863610" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:34.863318" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:34.863267" elapsed="0.000499"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:34.864221" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-28T03:06:34.863915" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:34.863854" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:34.864500" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:34.871548" elapsed="0.000169"/>
</kw>
<msg time="2026-04-28T03:06:34.871778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.870519" elapsed="0.001337"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:34.872303" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:34.872485" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:34.865242" elapsed="0.007330"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:34.275747" elapsed="0.596922"/>
</kw>
<msg time="2026-04-28T03:06:34.872723" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.274920" elapsed="0.597863"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:34.274294" elapsed="0.598567"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:34.875258" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:34.874926" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:34.874844" elapsed="0.000577"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.875715" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:34.875827" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:34.875566" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:34.876414" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:34.876019" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.877022" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:34.876611" elapsed="0.000437"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:34.877885" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:34.877977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:34.877603" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.878151" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:34.879650" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:35.148686" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:34.879098" elapsed="0.269783"/>
</kw>
<msg time="2026-04-28T03:06:35.149012" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.878654" elapsed="0.270492"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:34.877261" elapsed="0.272063"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.149989" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:06:35.162534" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:35.162700" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:35.162763" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:35.149636" elapsed="0.013160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:35.163055" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.164472" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:35.163845" elapsed="0.000719"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:35.165046" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:35.164733" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.164685" elapsed="0.000521"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:35.165553" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:06:35.165323" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.165289" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:35.165808" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:35.172589" elapsed="0.000150"/>
</kw>
<msg time="2026-04-28T03:06:35.172782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.171499" elapsed="0.001345"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.173008" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.173163" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:35.166493" elapsed="0.006750"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:34.874369" elapsed="0.298968"/>
</kw>
<msg time="2026-04-28T03:06:35.173451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:34.873553" elapsed="0.299959"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:34.873090" elapsed="0.300501"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.175688" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:35.175426" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.175408" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.176052" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:35.176155" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:35.175905" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.176696" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:35.176322" elapsed="0.000419"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.177278" level="INFO">${conn_id} = 181</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.176886" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.180312" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:35.180394" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:35.177836" elapsed="0.002583"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.180574" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.181746" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:35.449161" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:35.181428" elapsed="0.267896"/>
</kw>
<msg time="2026-04-28T03:06:35.449425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.181079" elapsed="0.268462"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:35.177507" elapsed="0.272207"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.450363" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:06:35.594658" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:35.595099" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:06:35.595216" level="INFO">${stderr} = 2026-04-28T03:06:35Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:35Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:35Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:35.450033" elapsed="0.145239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:35.595840" elapsed="0.000630"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.597611" level="INFO">2026-04-28T03:06:35Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:35Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:35Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:35.596887" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:35.598352" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:35.597914" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.597850" elapsed="0.000674"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:35.598888" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-28T03:06:35.598643" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.598611" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:35.599451" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:35.605284" elapsed="0.000213"/>
</kw>
<msg time="2026-04-28T03:06:35.605560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.604414" elapsed="0.001235"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.605859" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.606095" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:35.600384" elapsed="0.005827"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:35.174912" elapsed="0.431554"/>
</kw>
<msg time="2026-04-28T03:06:35.606548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.174356" elapsed="0.432277"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:35.173892" elapsed="0.432855"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:06:32.091437" elapsed="3.515391"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:35.614047" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:35.614192" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '311'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:35.607297" elapsed="0.006975"/>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</var>
<status status="PASS" start="2026-04-28T03:06:35.607121" elapsed="0.007195"/>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="PASS" start="2026-04-28T03:06:35.606904" elapsed="0.007446"/>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:35.619668" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:35.619829" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:35.620026" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:35.614778" elapsed="0.005289"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.627296" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:35.626426" elapsed="0.000912"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:35.623812" elapsed="0.003586"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.627671" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:35.627435" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.623787" elapsed="0.004047"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.628439" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:35.628075" elapsed="0.000440"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:35.628575" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:35.620452" elapsed="0.008300"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:35.635721" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01e6th4d4qmtvp1hrsn8ygsfx9k4.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:35.635905" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:35.636045" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:35.628966" elapsed="0.007105"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.641469" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:35.640426" elapsed="0.001084"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:35.638498" elapsed="0.003069"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.641799" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:35.641602" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.638480" elapsed="0.003425"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.642462" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:35.642112" elapsed="0.000689"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:35.642866" elapsed="0.000043"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:35.636338" elapsed="0.006736"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:06:35.614564" elapsed="0.028581"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:35.643438" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-28T03:06:35.643333" elapsed="0.000233"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:06:32.091091" elapsed="3.552551"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:06:32.090211" elapsed="3.553503"/>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-28T03:06:01.010125" elapsed="34.633632"/>
</suite>
<suite id="s1-s6" name="Bug Validation" source="/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot">
<kw name="Suite Setup" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.728528" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:35.724607" elapsed="0.003973"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-28T03:06:35.724391" elapsed="0.004252"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.733198" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:06:35.729699" elapsed="0.003527"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:35.733427" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:35.733310" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.733287" elapsed="0.000204"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.734008" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:35.733638" elapsed="0.000414"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.734581" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-28T03:06:35.734241" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-28T03:06:35.735125" elapsed="0.000282"/>
</kw>
<msg time="2026-04-28T03:06:35.735503" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:35.735550" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:35.734766" elapsed="0.000807"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.736131" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:35.735746" elapsed="0.000412"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.737149" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:35.736866" elapsed="0.000310"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.737575" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:35.737320" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.738054" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.737751" elapsed="0.000329"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.741259" elapsed="0.000209"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.741966" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:35.741621" elapsed="0.000372"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.742141" elapsed="0.000237"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.743177" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:35.742857" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-28T03:06:35.743250" elapsed="0.000034"/>
</return>
<msg time="2026-04-28T03:06:35.743405" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-28T03:06:35.742568" elapsed="0.000861"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:35.744045" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.159:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63ef48a50&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:06:35.743578" elapsed="0.000593"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.744387" elapsed="0.000377"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-28T03:06:35.740682" elapsed="0.004146"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:35.740498" elapsed="0.004374"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-28T03:06:35.738134" elapsed="0.006768"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.745493" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:35.745081" elapsed="0.000455"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.746119" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.159'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:35.745703" elapsed="0.000461"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.746707" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-28T03:06:35.746319" elapsed="0.000431"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-28T03:06:35.736421" elapsed="0.010387"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-28T03:06:35.729363" elapsed="0.017502"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:35.747077" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:35.746960" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.746913" elapsed="0.000230"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.750152" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:35.749710" elapsed="0.000468"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.750632" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:35.750336" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:35.750701" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:06:35.750855" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:35.749391" elapsed="0.001488"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:35.751897" level="INFO">${member_ip} = 10.30.170.159</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.751588" elapsed="0.000335"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.752639" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:35.752739" level="INFO">${current_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:35.752500" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:35.756267" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:35.755683" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:35.755663" elapsed="0.000732"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.756864" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:35.757117" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:35.756588" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.758100" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.159" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:35.757428" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.759408" level="INFO">${conn_id} = 182</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:35.758503" elapsed="0.000956"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:35.761158" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:35.761334" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:35.760789" elapsed="0.000589"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.761710" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:35.763295" level="INFO">Logging into '10.30.170.159:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:36.092347" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:56 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.159
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Tue Apr 28 03:06:32 2026 from 10.30.171.168
[?2004h[jenkins@releng-39784-211-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:35.762971" elapsed="0.329575"/>
</kw>
<msg time="2026-04-28T03:06:36.092655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.762522" elapsed="0.330325"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:35.759898" elapsed="0.333179"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.094217" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-28T03:06:36.107195" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-28T03:06:36.107557" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:36.107782" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:36.093554" elapsed="0.014361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.108627" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.112292" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.110980" elapsed="0.001524"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.113123" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.112738" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.112702" elapsed="0.000648"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:36.113773" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-28T03:06:36.113462" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.113438" elapsed="0.000605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.114125" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.119739" elapsed="0.000297"/>
</kw>
<msg time="2026-04-28T03:06:36.120099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.118883" elapsed="0.001688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.120838" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.121217" elapsed="0.000047"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.114766" elapsed="0.006578"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:35.754704" elapsed="0.366812"/>
</kw>
<msg time="2026-04-28T03:06:36.121571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.753890" elapsed="0.367731"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-28T03:06:35.753418" elapsed="0.368344"/>
</kw>
<msg time="2026-04-28T03:06:36.121804" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:35.752913" elapsed="0.368954"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.125089" elapsed="0.000155"/>
</kw>
<msg time="2026-04-28T03:06:36.125287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.124413" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.125506" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.125660" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.122205" elapsed="0.003535"/>
</kw>
<msg time="2026-04-28T03:06:36.125865" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-28T03:06:35.752150" elapsed="0.373741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.126330" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.126083" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:36.126413" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-28T03:06:35.751240" elapsed="0.375295"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:35.751071" elapsed="0.375500"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:35.750929" elapsed="0.375677"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-28T03:06:35.747355" elapsed="0.379307"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:06:36.126808" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.139760" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.139650" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.139631" elapsed="0.000196"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.140126" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:36.140229" level="INFO">${current_ssh_connection_object} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.140002" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.140654" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.140402" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.141099" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.140842" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:36.141863" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:06:36.141644" elapsed="0.000335">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-28T03:06:36.142085" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:06:36.142131" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.141293" elapsed="0.000861"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.142444" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:36.142230" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.142212" elapsed="0.000330"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:36.143276" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.143010" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:06:36.143350" elapsed="0.000066"/>
</return>
<msg time="2026-04-28T03:06:36.143542" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.142732" elapsed="0.000834"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.143713" elapsed="0.000460"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.144457" level="INFO">index=183
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:36.144769" level="INFO">${karaf_connection_object} = index=183
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.144337" elapsed="0.000460"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.144959" elapsed="0.002051"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.147434" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:06:36.270154" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.147171" elapsed="0.123181"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.274615" elapsed="0.000271"/>
</kw>
<msg time="2026-04-28T03:06:36.274988" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.273985" elapsed="0.001085"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.275231" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.275389" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.271581" elapsed="0.003895"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:36.270811" elapsed="0.004715"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.139373" elapsed="0.136208"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:36.127797" elapsed="0.147834"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.127437" elapsed="0.148249"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:36.127304" elapsed="0.148425"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-28T03:06:36.127157" elapsed="0.148611"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-28T03:06:35.728917" elapsed="0.546916"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.278534" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.278407" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.278381" elapsed="0.000226"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.283360" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.283244" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.283225" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.284540" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:36.284072" elapsed="0.000497"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.285051" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:36.284729" elapsed="0.000457"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:36.285236" elapsed="0.000037"/>
</return>
<msg time="2026-04-28T03:06:36.285406" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:36.283680" elapsed="0.001751"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.290740" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.290614" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.290594" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.292177" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.292002" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.291985" elapsed="0.000262"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:36.292729" level="INFO">${karaf_connection_index} = 183</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.292389" elapsed="0.000369"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.293177" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.292915" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.326046" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "o "v "s "[78Cd "[A[78Cb</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:36.293850" elapsed="0.032421"/>
</kw>
<msg time="2026-04-28T03:06:36.326465" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:36.326511" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.293358" elapsed="0.033190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.367348" level="INFO">"- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "B "u "g "_ "V "a "l "i "d "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:36.327447" elapsed="0.040155"/>
</kw>
<msg time="2026-04-28T03:06:36.367808" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:36.367855" level="INFO">${message_wait} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.326805" elapsed="0.041088"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.368416" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:36.368033" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.367998" elapsed="0.000600"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.369199" level="INFO"> "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a "d "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "o "v "s "d "b "/ "S "o "u "t "h "b "o "u "n "d "[78C_ "[A[78CD
 "o "m "a "i "n "/ "B "u "g "_ "V "a "l "i "d "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.368742" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.369586" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:36.369360" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.369342" elapsed="0.000414"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:36.369793" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.372707" elapsed="0.000172"/>
</kw>
<msg time="2026-04-28T03:06:36.372925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.372077" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.373411" elapsed="0.000064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.373787" elapsed="0.000064"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.371261" elapsed="0.002790"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:36.370302" elapsed="0.003886"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:36.291684" elapsed="0.082606"/>
</kw>
<msg time="2026-04-28T03:06:36.374391" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:36.374435" level="INFO">${message} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.290999" elapsed="0.083474"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:36.374911" elapsed="0.000344"/>
</return>
<status status="PASS" start="2026-04-28T03:06:36.374559" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.374538" elapsed="0.000782"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.375748" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.376112" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.376187" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:36.290271" elapsed="0.086023"/>
</kw>
<msg time="2026-04-28T03:06:36.376388" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:36.376432" level="INFO">${output} =  "- "c "s "i "t "- "1 "n "o "d "e "- "u "p "s "t "r "e "a "m "- "s "o "u "t "h "b "o "u "n "d "- "a "l "l "- "v "a "n "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.285981" elapsed="0.090487"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.376793" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:36.376544" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.376527" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:36.285828" elapsed="0.091065"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:36.285644" elapsed="0.091282"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:36.282894" elapsed="0.094105"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-28T03:06:36.276502" elapsed="0.100556"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.276006" elapsed="0.101095"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-28T03:06:35.724073" elapsed="0.653082"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:36.390556" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:36.390411" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.390385" elapsed="0.000259"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.391055" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:36.391181" level="INFO">${current_ssh_connection_object} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.390854" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.391681" level="INFO">{1: 183}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.391363" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.392177" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.391871" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.392795" elapsed="0.000202"/>
</kw>
<msg time="2026-04-28T03:06:36.393100" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:36.393145" level="INFO">${old_connection_index} = 183</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.392382" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.394130" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.405107" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:36.394863" elapsed="0.010349"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.394540" elapsed="0.010742"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.405909" elapsed="0.000541"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:36.405511" elapsed="0.000992"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:06:36.393603" elapsed="0.012948"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:36.393245" elapsed="0.013363"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.393227" elapsed="0.013416"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:36.407570" level="INFO">${ip_address} = 10.30.170.159</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.407279" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-28T03:06:36.407650" elapsed="0.000044"/>
</return>
<msg time="2026-04-28T03:06:36.407818" level="INFO">${odl_ip} = 10.30.170.159</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.406924" elapsed="0.000918"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.408012" elapsed="0.000489"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.408800" level="INFO">index=184
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:36.408901" level="INFO">${karaf_connection_object} = index=184
host=10.30.170.159
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_er...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.408666" elapsed="0.000262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.409089" elapsed="0.002146"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.411652" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-04-28T03:06:36.561526" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.411391" elapsed="0.150329"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:36.566009" elapsed="0.000161"/>
</kw>
<msg time="2026-04-28T03:06:36.566215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.565523" elapsed="0.000762"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.566439" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.566594" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:36.563356" elapsed="0.003321"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:36.562185" elapsed="0.004540"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.388704" elapsed="0.178073"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:36.567266" level="INFO">Creating Session using : alias=session, url=http://10.30.170.159:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b63ef9e110&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-28T03:06:36.566917" elapsed="0.000580"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:36.570382" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:36.570107" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:36.570083" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.570735" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:36.570839" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:36.570605" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.571410" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:36.571025" elapsed="0.000432"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.571995" level="INFO">${conn_id} = 185</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:36.571605" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:36.572866" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:36.572960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:36.572592" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.573136" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.574400" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:36.837030" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:36.573989" elapsed="0.263220"/>
</kw>
<msg time="2026-04-28T03:06:36.837314" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.573623" elapsed="0.263797"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:36.572232" elapsed="0.265362"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:36.838213" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:06:37.976355" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:37.976722" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:37.976824" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:36.837888" elapsed="1.138995"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:37.977433" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:37.979098" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:37.978443" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:37.979687" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:37.979392" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:37.979342" elapsed="0.000500"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:37.980224" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:06:37.979987" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:37.979923" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:37.980609" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:37.985301" elapsed="0.000266"/>
</kw>
<msg time="2026-04-28T03:06:37.985629" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:37.984506" elapsed="0.001213"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:37.985928" elapsed="0.000062"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:37.986177" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:37.981375" elapsed="0.004916"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:36.569604" elapsed="1.416814"/>
</kw>
<msg time="2026-04-28T03:06:37.986490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:36.569046" elapsed="1.417509"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:36.568597" elapsed="1.418066"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:37.989420" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:37.989006" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:37.988981" elapsed="0.000552"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:37.989905" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:37.990069" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:37.989727" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:37.990713" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:37.990304" elapsed="0.000456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:37.991307" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:37.990905" elapsed="0.000427"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:37.992176" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:37.992251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:37.991877" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:37.992422" elapsed="0.002049"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:37.995402" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:38.265482" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:37.995014" elapsed="0.270651"/>
</kw>
<msg time="2026-04-28T03:06:38.265771" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:37.994643" elapsed="0.271230"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:37.991545" elapsed="0.274521"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.266709" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:06:38.299452" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:06:38.299881" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:38.300029" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:38.266368" elapsed="0.033720"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:38.300506" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.302235" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:38.301524" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:38.302833" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:38.302526" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.302474" elapsed="0.000565"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:38.303426" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:06:38.303167" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.303130" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:38.303909" elapsed="0.000066"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:38.310765" elapsed="0.000212"/>
</kw>
<msg time="2026-04-28T03:06:38.311022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.309930" elapsed="0.001157"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.311241" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.311397" elapsed="0.000026"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:38.304675" elapsed="0.006809"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:37.988326" elapsed="0.323248"/>
</kw>
<msg time="2026-04-28T03:06:38.311627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:37.987537" elapsed="0.324138"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:37.986900" elapsed="0.324855"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:06:36.568298" elapsed="1.743514"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.313836" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:38.313570" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.313552" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.314219" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:38.314323" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:38.314085" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.314875" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:38.314494" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.315469" level="INFO">${conn_id} = 187</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:38.315088" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.316572" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:38.316650" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:38.316279" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.316827" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.318062" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:38.580995" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:38.317724" elapsed="0.263443"/>
</kw>
<msg time="2026-04-28T03:06:38.581274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.317332" elapsed="0.264046"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:38.315706" elapsed="0.265850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.582210" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:38.604827" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:38.605114" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:38.605213" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:38.581874" elapsed="0.023390"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:38.605638" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.607232" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:38.606555" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:38.607844" elapsed="0.000054"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:38.607502" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.607450" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:38.608590" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:06:38.608294" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.608242" elapsed="0.000557"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:38.608882" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:38.615830" elapsed="0.000197"/>
</kw>
<msg time="2026-04-28T03:06:38.616078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.615257" elapsed="0.000895"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.616338" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.616523" elapsed="0.000024"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:38.609827" elapsed="0.006795"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:38.313062" elapsed="0.303669"/>
</kw>
<msg time="2026-04-28T03:06:38.616794" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.312468" elapsed="0.304380"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:38.312019" elapsed="0.304943"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.619376" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:38.619039" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.619016" elapsed="0.000458"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.619812" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:38.619963" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:38.619654" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.620965" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:38.620186" elapsed="0.000837"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.621739" level="INFO">${conn_id} = 188</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:38.621275" elapsed="0.000495"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.622780" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:38.622872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:38.622448" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.623103" elapsed="0.000570"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.624686" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:38.880086" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:38.624317" elapsed="0.255925"/>
</kw>
<msg time="2026-04-28T03:06:38.880329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.623870" elapsed="0.256545"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:38.622046" elapsed="0.258511"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.881073" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:06:38.983898" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:38.984037" level="INFO">${stdout} =  * Exiting ovs-vswitchd (6850)
 * Exiting ovsdb-server (6827)</msg>
<msg time="2026-04-28T03:06:38.984082" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:38.880797" elapsed="0.103309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:38.984269" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.985062" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:38.984721" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:38.985355" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:38.985200" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.985170" elapsed="0.000264"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:38.985592" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:38.985488" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.985472" elapsed="0.000201"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:38.985706" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:38.988869" elapsed="0.000164"/>
</kw>
<msg time="2026-04-28T03:06:38.989076" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.988389" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.989290" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.989445" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:38.986071" elapsed="0.003459"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:38.618452" elapsed="0.371169"/>
</kw>
<msg time="2026-04-28T03:06:38.989675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.617747" elapsed="0.371976"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:38.617202" elapsed="0.372601"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:38.992053" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:38.991773" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:38.991755" elapsed="0.000441"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.992475" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:38.992581" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:38.992341" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.993153" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:38.992753" elapsed="0.000447"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.993725" level="INFO">${conn_id} = 189</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:38.993351" elapsed="0.000400"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:38.994609" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:38.994687" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:38.994336" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.994862" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:38.996042" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:39.259600" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:38.995711" elapsed="0.264019"/>
</kw>
<msg time="2026-04-28T03:06:39.259812" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.995363" elapsed="0.264528"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:38.993995" elapsed="0.266053"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.260552" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:06:39.282911" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:39.283189" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:39.283285" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:39.260283" elapsed="0.023052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:39.283682" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:39.285194" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:39.284570" elapsed="0.000719"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:39.285719" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:39.285451" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:39.285405" elapsed="0.000469"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:39.286300" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:39.286054" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:39.285988" elapsed="0.000496"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:39.286557" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:39.291915" elapsed="0.000167"/>
</kw>
<msg time="2026-04-28T03:06:39.292124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.291446" elapsed="0.000739"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:39.292334" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:39.292485" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:39.287248" elapsed="0.005318"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:38.991069" elapsed="0.301586"/>
</kw>
<msg time="2026-04-28T03:06:39.292763" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:38.990494" elapsed="0.302317"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:38.990050" elapsed="0.302841"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:39.294878" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:39.294617" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:39.294599" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.295249" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:39.295350" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:39.295124" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:39.295896" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:39.295521" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.296476" level="INFO">${conn_id} = 190</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:39.296108" elapsed="0.000393"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:39.297326" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:39.297401" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:39.297053" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.297571" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.298784" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:39.597387" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:39.298443" elapsed="0.299056"/>
</kw>
<msg time="2026-04-28T03:06:39.597582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.298088" elapsed="0.299572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:39.296706" elapsed="0.301088"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.598334" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:06:39.701661" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:39.701980" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:06:39.702096" level="INFO">${stderr} = 2026-04-28T03:06:39Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:39Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:39Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:39.598044" elapsed="0.104111"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:39.702560" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:39.704162" level="INFO">2026-04-28T03:06:39Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:39Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:39Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:39.703499" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:39.704746" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:39.704451" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:39.704399" elapsed="0.000515"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:39.705321" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:06:39.705073" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:39.705037" elapsed="0.000483"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:39.705699" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:39.711504" elapsed="0.000147"/>
</kw>
<msg time="2026-04-28T03:06:39.711693" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.710945" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:39.711901" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:39.712077" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:39.706500" elapsed="0.005657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:39.294135" elapsed="0.418110"/>
</kw>
<msg time="2026-04-28T03:06:39.712298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.293543" elapsed="0.418800"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:39.293103" elapsed="0.419316"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:06:36.567921" elapsed="3.144555"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:39.715096" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:39.714819" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:39.714801" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.715444" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:39.715544" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:39.715316" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:39.716103" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:39.715712" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.716660" level="INFO">${conn_id} = 191</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:39.716293" elapsed="0.000392"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:39.717514" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:39.717589" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:39.717237" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.717759" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:39.719060" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:40.232551" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:39.718631" elapsed="0.514107"/>
</kw>
<msg time="2026-04-28T03:06:40.232850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.718279" elapsed="0.514701"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:39.716891" elapsed="0.516275"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:40.233980" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:06:41.373059" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:41.373368" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:41.373436" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:40.233624" elapsed="1.139850"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:41.373792" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:41.375075" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:41.374572" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:41.375511" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:41.375289" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:41.375251" elapsed="0.000368"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:41.375847" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-28T03:06:41.375695" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:41.375672" elapsed="0.000330"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:41.376052" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:41.380505" elapsed="0.000269"/>
</kw>
<msg time="2026-04-28T03:06:41.380838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.379800" elapsed="0.001129"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:41.381370" elapsed="0.000044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:41.381649" elapsed="0.000040"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:41.376514" elapsed="0.005280"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:39.714340" elapsed="1.667642"/>
</kw>
<msg time="2026-04-28T03:06:41.382086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:39.713754" elapsed="1.668420"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:39.713331" elapsed="1.668989"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:41.385525" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:41.385138" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:41.385111" elapsed="0.000534"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.386095" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:41.386265" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:41.385874" elapsed="0.000442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:41.387391" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:41.386587" elapsed="0.000901"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.388379" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:41.387738" elapsed="0.000681"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:41.389490" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:41.389569" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:41.389189" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.389882" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.391734" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:41.665874" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:41.391226" elapsed="0.274833"/>
</kw>
<msg time="2026-04-28T03:06:41.666161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.390671" elapsed="0.275592"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:41.388726" elapsed="0.277699"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.667062" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:06:41.700166" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:06:41.700470" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:41.700565" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:41.666717" elapsed="0.033903"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:41.701106" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:41.702730" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:41.702070" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:41.703520" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:41.703046" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:41.702991" elapsed="0.000702"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:41.704107" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:06:41.703819" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:41.703784" elapsed="0.000525"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:41.704388" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:41.710278" elapsed="0.000273"/>
</kw>
<msg time="2026-04-28T03:06:41.710615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.709375" elapsed="0.001331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:41.710914" elapsed="0.000069"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:41.711193" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:41.705175" elapsed="0.006133"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:41.384358" elapsed="0.327073"/>
</kw>
<msg time="2026-04-28T03:06:41.711504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.383345" elapsed="0.328225"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:41.382581" elapsed="0.329097"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:06:39.713038" elapsed="1.998715"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:41.714629" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:41.714242" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:41.714211" elapsed="0.000612"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.715274" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:41.715423" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:41.715064" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:41.716235" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:41.715665" elapsed="0.000635"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.717056" level="INFO">${conn_id} = 193</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:41.716510" elapsed="0.000582"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:41.718642" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:41.718769" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:41.718175" elapsed="0.000628"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.719041" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.720402" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:41.992745" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:41.720085" elapsed="0.272892"/>
</kw>
<msg time="2026-04-28T03:06:41.993094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.719723" elapsed="0.273494"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:41.717396" elapsed="0.276002"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:41.994173" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:42.088472" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:42.088726" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:42.088788" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:41.993738" elapsed="0.095084"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:42.089168" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.090245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:42.089809" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:42.090628" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:42.090428" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.090390" elapsed="0.000340"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:42.090966" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-28T03:06:42.090804" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.090783" elapsed="0.000309"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:42.091141" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:42.095284" elapsed="0.000204"/>
</kw>
<msg time="2026-04-28T03:06:42.095533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.094629" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.095751" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.095904" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:42.091621" elapsed="0.004384"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:41.713531" elapsed="0.382566"/>
</kw>
<msg time="2026-04-28T03:06:42.096220" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:41.712694" elapsed="0.383575"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:41.712058" elapsed="0.384291"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.098545" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:42.098273" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.098254" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.098913" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:42.099036" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:42.098767" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.099825" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:42.099206" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.100427" level="INFO">${conn_id} = 194</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:42.100039" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.101306" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:42.101384" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:42.101021" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.101558" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.102720" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:42.367638" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:42.102399" elapsed="0.265406"/>
</kw>
<msg time="2026-04-28T03:06:42.367914" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.102052" elapsed="0.265982"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:42.100666" elapsed="0.267538"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.368809" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:06:42.421723" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:42.422014" level="INFO">${stdout} =  * Exiting ovs-vswitchd (2568)
 * Exiting ovsdb-server (2551)</msg>
<msg time="2026-04-28T03:06:42.422117" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:42.368490" elapsed="0.053690"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:42.422545" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.424514" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:42.423837" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:42.425105" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:42.424784" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.424736" elapsed="0.000525"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:42.425608" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:06:42.425377" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.425343" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:42.425867" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:42.431572" elapsed="0.000210"/>
</kw>
<msg time="2026-04-28T03:06:42.431843" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.430769" elapsed="0.001279"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.432263" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.432479" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:42.426591" elapsed="0.006002"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:42.097760" elapsed="0.334957"/>
</kw>
<msg time="2026-04-28T03:06:42.432790" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.097122" elapsed="0.335733"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:42.096554" elapsed="0.336431"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.435719" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:42.435356" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.435331" elapsed="0.000469"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.436085" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:42.436186" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:42.435955" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.436730" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:42.436355" elapsed="0.000421"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.437315" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:42.436928" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.438172" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:42.438248" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:42.437882" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.438419" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.439587" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:42.705115" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:42.439258" elapsed="0.266091"/>
</kw>
<msg time="2026-04-28T03:06:42.705476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.438895" elapsed="0.266691"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:42.437548" elapsed="0.268226"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.706461" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:06:42.719564" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:42.719824" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:42.719920" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:42.706119" elapsed="0.013892"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:42.720373" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.721886" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:42.721286" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:42.722577" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:42.722292" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.722244" elapsed="0.000486"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:42.723110" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:06:42.722845" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.722812" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:42.723372" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:42.729426" elapsed="0.000149"/>
</kw>
<msg time="2026-04-28T03:06:42.729619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.728837" elapsed="0.000845"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.729830" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.729998" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:42.724095" elapsed="0.005986"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:42.434665" elapsed="0.295503"/>
</kw>
<msg time="2026-04-28T03:06:42.730220" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.433871" elapsed="0.296394"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:42.433253" elapsed="0.297088"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:42.732343" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:42.732078" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:42.732060" elapsed="0.000362"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.732693" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:42.732794" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:42.732561" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.733363" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:42.732979" elapsed="0.000430"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.733948" level="INFO">${conn_id} = 196</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:42.733556" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:42.734802" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:42.734876" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:42.734517" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.735064" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:42.736232" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:43.040145" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:42.735897" elapsed="0.304434"/>
</kw>
<msg time="2026-04-28T03:06:43.040437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.735551" elapsed="0.305087"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:42.734184" elapsed="0.306629"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.041496" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:06:43.205970" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:43.206302" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:06:43.206404" level="INFO">${stderr} = 2026-04-28T03:06:43Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:43Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:43Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:43.041163" elapsed="0.165296"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:43.206883" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.208527" level="INFO">2026-04-28T03:06:43Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:43Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:43Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:43.207887" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.209119" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:43.208802" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.208753" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:43.209623" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:06:43.209391" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.209359" elapsed="0.000454"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.209887" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:43.215160" elapsed="0.000203"/>
</kw>
<msg time="2026-04-28T03:06:43.215423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.214492" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.215747" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.216100" elapsed="0.000036"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:43.210598" elapsed="0.005629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:42.731572" elapsed="0.484782"/>
</kw>
<msg time="2026-04-28T03:06:43.216429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:42.730993" elapsed="0.485501"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:42.730533" elapsed="0.486069"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:06:39.712690" elapsed="3.503989"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:36.567649" elapsed="6.649102"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.219579" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:43.219214" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.219187" elapsed="0.000532"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.220118" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:43.220261" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:43.219921" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.220926" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:43.220502" elapsed="0.000545"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.221584" level="INFO">${conn_id} = 197</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:43.221197" elapsed="0.000413"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.222449" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:43.222525" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:43.222175" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.222700" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.223876" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:43.518139" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:43.223544" elapsed="0.294735"/>
</kw>
<msg time="2026-04-28T03:06:43.518358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.223194" elapsed="0.295241"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:43.221821" elapsed="0.296742"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.519049" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:06:43.581712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:43.582042" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:43.582144" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:43.518792" elapsed="0.063404"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:43.582548" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.584143" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:43.583460" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.584700" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:43.584410" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.584360" elapsed="0.000503"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:43.585254" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:06:43.585017" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.584979" elapsed="0.000458"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.585511" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:43.593212" elapsed="0.000150"/>
</kw>
<msg time="2026-04-28T03:06:43.593405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.592534" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.593621" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.593773" elapsed="0.000019"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:43.586224" elapsed="0.007629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:43.218526" elapsed="0.375435"/>
</kw>
<msg time="2026-04-28T03:06:43.594016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.217729" elapsed="0.376334"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:43.217025" elapsed="0.377117"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.605262" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:43.604990" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.604970" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.605610" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:43.605712" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:43.605483" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.606279" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:43.605885" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.606841" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:43.606474" elapsed="0.000393"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.607707" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:43.607784" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:43.607428" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.607996" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.609251" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:43.876017" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:43.608822" elapsed="0.267394"/>
</kw>
<msg time="2026-04-28T03:06:43.876361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.608473" elapsed="0.268024"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:43.607090" elapsed="0.269637"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:43.877608" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:43.910966" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:43.911211" level="INFO">${stdout} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:43.911309" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:43.877164" elapsed="0.034195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:43.911708" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.913213" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:43.912577" elapsed="0.000731"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.913754" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:43.913475" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.913427" elapsed="0.000481"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:43.914289" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:43.914059" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:43.914025" elapsed="0.000443"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.914543" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:43.921020" elapsed="0.000178"/>
</kw>
<msg time="2026-04-28T03:06:43.921242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.920164" elapsed="0.001139"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.921456" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.921609" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:43.915229" elapsed="0.006460"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:43.604211" elapsed="0.317623"/>
</kw>
<msg time="2026-04-28T03:06:43.921889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:43.603614" elapsed="0.318342"/>
</kw>
<msg time="2026-04-28T03:06:43.922071" level="INFO">${output} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:43.603074" elapsed="0.319022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.922496" level="INFO">81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:43.922246" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:43.923217" level="FAIL">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:43.922823" elapsed="0.000467">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:06:43.922610" elapsed="0.000752">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:06:43.922592" elapsed="0.000802">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:43.923604" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:43.923462" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:43.923446" elapsed="0.000239"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.923718" elapsed="0.000015"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:06:43.602663" elapsed="0.321159">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:06:43.923882" elapsed="0.000015"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:06:43.594808" elapsed="0.329197">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:44.941753" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:44.941440" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:44.941417" elapsed="0.000432"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:44.942163" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:44.942276" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:44.942010" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:44.942831" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:44.942447" elapsed="0.000431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:44.943636" level="INFO">${conn_id} = 199</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:44.943043" elapsed="0.000620"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:44.944547" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:44.944623" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:44.944264" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:44.944803" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:44.946209" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:45.217042" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:44.945761" elapsed="0.271434"/>
</kw>
<msg time="2026-04-28T03:06:45.217276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:44.945408" elapsed="0.271959"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:44.943879" elapsed="0.273633"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.218001" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:45.240282" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:45.240481" level="INFO">${stdout} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:45.240548" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:45.217740" elapsed="0.022840"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:45.240811" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.241607" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.241277" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.241894" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:45.241742" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.241715" elapsed="0.000276"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:45.242155" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:06:45.242046" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.242031" elapsed="0.000210"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.242275" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:45.245556" elapsed="0.000197"/>
</kw>
<msg time="2026-04-28T03:06:45.245798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.244978" elapsed="0.000888"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.246046" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.246208" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:45.242610" elapsed="0.003683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:44.940931" elapsed="0.305454"/>
</kw>
<msg time="2026-04-28T03:06:45.246451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:44.940286" elapsed="0.306216"/>
</kw>
<msg time="2026-04-28T03:06:45.246617" level="INFO">${output} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:44.939768" elapsed="0.306875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.247070" level="INFO">81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.246796" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:45.247417" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:45.247189" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.247170" elapsed="0.000668"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.248132" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.247895" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.247879" elapsed="0.000336"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:45.248314" elapsed="0.000039"/>
</return>
<msg time="2026-04-28T03:06:45.248545" level="INFO">${output} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:06:44.939309" elapsed="0.309263"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:45.248623" elapsed="0.000027"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:06:44.924796" elapsed="0.323945"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:43.594297" elapsed="1.654491"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.250995" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.250703" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.250685" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.251348" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:45.251448" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:45.251215" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.252010" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.251619" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.252596" level="INFO">${conn_id} = 200</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:45.252204" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.253433" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:45.253507" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:45.253175" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.253677" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.254835" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:45.563235" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:45.254520" elapsed="0.308890"/>
</kw>
<msg time="2026-04-28T03:06:45.563514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.254169" elapsed="0.309449"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:45.252827" elapsed="0.310958"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.564433" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:45.586911" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:45.587189" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:45.587296" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:45.564103" elapsed="0.023246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:45.587699" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.589299" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.588640" elapsed="0.000752"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.589854" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:45.589564" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.589514" elapsed="0.000534"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:45.590396" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:45.590163" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.590131" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.590649" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:45.597388" elapsed="0.000151"/>
</kw>
<msg time="2026-04-28T03:06:45.597582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.596814" elapsed="0.000830"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.597797" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.597971" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:45.591347" elapsed="0.006706"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:45.250222" elapsed="0.347922"/>
</kw>
<msg time="2026-04-28T03:06:45.598197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.249449" elapsed="0.348794"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:45.249007" elapsed="0.349315"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:45.608696" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:45.608930" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Mon, 27-Apr-2026 03:06:45 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:45.609227" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:45.598740" elapsed="0.010526"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.616226" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:45.615389" elapsed="0.000878"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:45.612774" elapsed="0.003585"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.616611" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.616407" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.612744" elapsed="0.003975"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.617140" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.616866" elapsed="0.000328"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:45.617237" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:45.609658" elapsed="0.007703"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:45.623142" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:45.623346" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:45.623499" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:45.617503" elapsed="0.006023"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.630224" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:45.629186" elapsed="0.001080"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:45.626516" elapsed="0.003806"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.630558" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.630357" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.626491" elapsed="0.004174"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.631223" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.630855" elapsed="0.000524"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:45.631440" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:45.623800" elapsed="0.007814"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:06:45.598533" elapsed="0.033151"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:35.723759" elapsed="9.907990"/>
</kw>
<test id="s1-s6-t1" name="Bug 7414 Same Endpoint Name" line="36">
<kw name="Test Setup" type="SETUP">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:45.635864" elapsed="0.000228"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:45.635607" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.637165" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:45.637055" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.637036" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.641813" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:45.641699" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.641682" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.642888" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:45.642492" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.643397" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:45.643090" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:45.643470" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:06:45.643629" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:45.642117" elapsed="0.001537"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.648810" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:45.648704" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.648687" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.650230" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:45.650045" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.650027" elapsed="0.000353"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:45.650988" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:45.650519" elapsed="0.000497"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.651473" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:45.651216" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.682945" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:45.653059" elapsed="0.030049"/>
</kw>
<msg time="2026-04-28T03:06:45.683256" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:45.683302" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:45.651681" elapsed="0.031657"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.717440" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "S "a "m "e "[C "E "n "d "p "o "i "n "t "[C "N "a "m "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:45.684857" elapsed="0.032748"/>
</kw>
<msg time="2026-04-28T03:06:45.717753" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:45.717798" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "S "a "m "e...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:45.683550" elapsed="0.034285"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.718276" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.717981" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.717960" elapsed="0.000549"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.719228" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "S "a "m "e "[C "E "n "d "p "o "i "n "t "[C "N "a "m "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.718653" elapsed="0.000682"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.719695" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.719419" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.719401" elapsed="0.000482"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:45.719916" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:45.722376" elapsed="0.000163"/>
</kw>
<msg time="2026-04-28T03:06:45.722582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.721845" elapsed="0.000800"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.722849" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.723087" elapsed="0.000022"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:45.721035" elapsed="0.002197"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:45.720193" elapsed="0.003130"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:45.649666" elapsed="0.073754"/>
</kw>
<msg time="2026-04-28T03:06:45.723510" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:45.723552" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "S "a "m "e...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:45.649036" elapsed="0.074553"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:45.723772" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:06:45.723663" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.723646" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.724281" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.724668" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:45.724749" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:45.648368" elapsed="0.076490"/>
</kw>
<msg time="2026-04-28T03:06:45.724967" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:45.725011" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "S "a "m "e...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:45.644040" elapsed="0.081008"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.725364" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.725122" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.725106" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:45.643889" elapsed="0.081573"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:45.643711" elapsed="0.081780"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:45.641336" elapsed="0.084207"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:45.636748" elapsed="0.088850"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:45.636296" elapsed="0.089347"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:45.633433" elapsed="0.092262"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:45.633118" elapsed="0.092622"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.726166" level="INFO">${bridge} = ovsbug_br_7414</msg>
<var>${bridge}</var>
<arg>ovsbug_br_7414</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:45.725886" elapsed="0.000306"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:45.728418" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:45.728130" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:45.728111" elapsed="0.000389"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.728769" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:45.728869" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:45.728638" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.729429" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:45.729054" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.730091" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:45.729661" elapsed="0.000457"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:45.731049" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:45.731134" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:45.730717" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.731317" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:45.732733" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:46.004072" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:45.732411" elapsed="0.271836"/>
</kw>
<msg time="2026-04-28T03:06:46.004355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.731799" elapsed="0.272686"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:45.730328" elapsed="0.274327"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.005281" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:06:46.068476" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:46.068792" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:46.068894" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:46.004973" elapsed="0.064011"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:46.069396" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.071017" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:46.070359" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.071585" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:46.071291" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.071240" elapsed="0.000499"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:46.072135" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:06:46.071860" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.071825" elapsed="0.000503"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.072403" elapsed="0.000076"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:46.077260" elapsed="0.000210"/>
</kw>
<msg time="2026-04-28T03:06:46.077533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.076450" elapsed="0.001171"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.077835" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.078070" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:46.073032" elapsed="0.005236"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:45.727571" elapsed="0.350825"/>
</kw>
<msg time="2026-04-28T03:06:46.078472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:45.727027" elapsed="0.351510"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:45.726419" elapsed="0.352229"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.081542" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:46.081267" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.081248" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.081901" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:46.082033" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:46.081765" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.082583" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:46.082206" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.083176" level="INFO">${conn_id} = 202</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:46.082776" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.084309" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:46.084386" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:46.084024" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.084709" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.085908" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:46.358135" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:46.085587" elapsed="0.272727"/>
</kw>
<msg time="2026-04-28T03:06:46.358415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.085234" elapsed="0.273280"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:46.083409" elapsed="0.275275"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.359293" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:06:46.381825" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:46.382133" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:46.382230" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:46.358995" elapsed="0.023286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:46.382642" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.384255" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:46.383583" elapsed="0.000767"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.384849" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:46.384552" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.384500" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:46.385526" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:06:46.385283" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.385246" elapsed="0.000467"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.385786" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:46.392450" elapsed="0.000246"/>
</kw>
<msg time="2026-04-28T03:06:46.392762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.391594" elapsed="0.001260"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.393108" elapsed="0.000035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.393341" elapsed="0.000032"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:46.386496" elapsed="0.006974"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:46.080642" elapsed="0.312972"/>
</kw>
<msg time="2026-04-28T03:06:46.393694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.079753" elapsed="0.314008"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:46.078922" elapsed="0.314962"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.406985" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:46.406703" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.406684" elapsed="0.000382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.407336" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:46.407437" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:46.407207" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.407999" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:46.407606" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.408592" level="INFO">${conn_id} = 203</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:46.408192" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.409512" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:46.409588" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:46.409232" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.409762" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.410919" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:46.677793" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:46.410600" elapsed="0.267358"/>
</kw>
<msg time="2026-04-28T03:06:46.678057" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.410253" elapsed="0.267901"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:46.408825" elapsed="0.270803"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:46.680239" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:46.702707" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:46.702999" level="INFO">${stdout} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:46.703102" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:46.679919" elapsed="0.023233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:46.703510" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.705119" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:46.704411" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.705675" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:46.705390" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.705337" elapsed="0.000495"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:46.706218" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:46.705980" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:46.705914" elapsed="0.000484"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.706472" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:46.711987" elapsed="0.000205"/>
</kw>
<msg time="2026-04-28T03:06:46.712251" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.711224" elapsed="0.001112"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.712561" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.712778" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:46.707178" elapsed="0.005712"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:46.406178" elapsed="0.306859"/>
</kw>
<msg time="2026-04-28T03:06:46.713110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:46.405616" elapsed="0.307558"/>
</kw>
<msg time="2026-04-28T03:06:46.713322" level="INFO">${output} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:46.405099" elapsed="0.308257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.713904" level="INFO">81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:46.713563" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:46.714884" level="FAIL">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:46.714373" elapsed="0.000632">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:06:46.714081" elapsed="0.001023">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:06:46.714056" elapsed="0.001094">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:46.715441" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:46.715245" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:46.715222" elapsed="0.000327"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.715593" elapsed="0.000021"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:06:46.404638" elapsed="0.311099">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:06:46.715821" elapsed="0.000020"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:06:46.394875" elapsed="0.321092">'81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:47.734108" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:47.733741" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:47.733709" elapsed="0.000500"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:47.734529" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:47.734650" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:47.734355" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:47.735245" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:47.734826" elapsed="0.000469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:47.735858" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:47.735456" elapsed="0.000431"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:47.736849" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:47.736945" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:47.736533" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:47.737128" elapsed="0.002136"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:47.740156" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:48.018044" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:47.739808" elapsed="0.278390"/>
</kw>
<msg time="2026-04-28T03:06:48.018305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:47.739438" elapsed="0.278973"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:47.736123" elapsed="0.282437"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.019066" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:48.041396" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:48.041651" level="INFO">${stdout} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:48.041752" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:48.018798" elapsed="0.023004"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:48.042209" elapsed="0.000474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.043731" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.043113" elapsed="0.000712"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:48.044377" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:48.044030" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.043978" elapsed="0.000562"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:48.045042" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-28T03:06:48.044660" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.044626" elapsed="0.000651"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:48.045354" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:48.050225" elapsed="0.000239"/>
</kw>
<msg time="2026-04-28T03:06:48.050526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.049373" elapsed="0.001243"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.050856" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.051187" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:48.046004" elapsed="0.005300"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:47.732964" elapsed="0.318467"/>
</kw>
<msg time="2026-04-28T03:06:48.051506" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:47.731987" elapsed="0.319588"/>
</kw>
<msg time="2026-04-28T03:06:48.051728" level="INFO">${output} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:47.731201" elapsed="0.320564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.052372" level="INFO">81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.052016" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:48.052898" elapsed="0.000525"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:48.052533" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.052508" elapsed="0.001007"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.053894" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:48.053594" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.053572" elapsed="0.000479"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:48.054100" elapsed="0.000040"/>
</return>
<msg time="2026-04-28T03:06:48.054318" level="INFO">${output} = 81d78a9c-5268-4f1c-bb8a-58a999164a93
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:06:47.730536" elapsed="0.323818"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:48.054446" elapsed="0.000038"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:06:47.717059" elapsed="0.337557"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:46.394146" elapsed="1.660538"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.067130" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:48.066843" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.066825" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.067481" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:48.067582" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:48.067353" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.068144" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.067753" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.068846" level="INFO">${conn_id} = 205</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:48.068339" elapsed="0.000547"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.069788" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:48.069864" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:48.069524" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.070053" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.071261" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:48.337506" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:48.070929" elapsed="0.266751"/>
</kw>
<msg time="2026-04-28T03:06:48.337782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.070576" elapsed="0.267308"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:48.069127" elapsed="0.268948"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.338661" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:48.361337" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:48.361639" level="INFO">${stdout} = c29d65a6-9801-4837-a0c7-394704431ae8
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:48.361744" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:48.338368" elapsed="0.023431"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:48.362268" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.363879" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.363228" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:48.364502" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:48.364197" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.364146" elapsed="0.000523"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:48.365110" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:06:48.364824" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.364785" elapsed="0.000527"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:48.365394" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:48.371509" elapsed="0.000154"/>
</kw>
<msg time="2026-04-28T03:06:48.371709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.370815" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.371960" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.372121" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:48.366147" elapsed="0.006056"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:48.066317" elapsed="0.305976"/>
</kw>
<msg time="2026-04-28T03:06:48.372345" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.065742" elapsed="0.306649"/>
</kw>
<msg time="2026-04-28T03:06:48.372502" level="INFO">${output} = c29d65a6-9801-4837-a0c7-394704431ae8
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:48.065226" elapsed="0.307302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.372972" level="INFO">c29d65a6-9801-4837-a0c7-394704431ae8
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.372676" elapsed="0.000343"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:48.373303" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:48.373088" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.373069" elapsed="0.000635"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.373996" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:48.373758" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.373742" elapsed="0.000333"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:48.374168" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:06:48.374324" level="INFO">${output} = c29d65a6-9801-4837-a0c7-394704431ae8
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:06:48.064682" elapsed="0.309668"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:48.374401" elapsed="0.000026"/>
</return>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:06:48.055771" elapsed="0.318749"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:48.054910" elapsed="0.319659"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.376692" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:48.376415" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.376397" elapsed="0.000390"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.377082" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:48.377184" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:48.376947" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.377737" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovsbug_br_7414" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.377358" elapsed="0.000426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.378336" level="INFO">${conn_id} = 206</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:48.377951" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.379238" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:48.379314" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:48.378975" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.379489" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.380640" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:48.648845" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:48.380326" elapsed="0.268729"/>
</kw>
<msg time="2026-04-28T03:06:48.649167" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.379979" elapsed="0.269288"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:48.378572" elapsed="0.270873"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.650106" level="INFO">Executing command 'sudo ovs-vsctl add-br ovsbug_br_7414'.</msg>
<msg time="2026-04-28T03:06:48.743177" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:48.743714" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:48.743826" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:48.649756" elapsed="0.094126"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:48.744227" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.745319" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.744969" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:48.745629" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:48.745464" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.745431" elapsed="0.000277"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:48.745875" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-28T03:06:48.745763" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.745748" elapsed="0.000244"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:48.746028" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:48.749521" elapsed="0.000153"/>
</kw>
<msg time="2026-04-28T03:06:48.749720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.748981" elapsed="0.000807"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.749967" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.750126" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:48.746479" elapsed="0.003733"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:48.375872" elapsed="0.374435"/>
</kw>
<msg time="2026-04-28T03:06:48.750364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.375314" elapsed="0.375099"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-br ${bridge}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:48.374773" elapsed="0.375726"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:48.752760" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:48.752487" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:48.752468" elapsed="0.000418"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.753229" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:48.753335" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:48.753087" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.753918" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovsbug_br_7414" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:48.753509" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.754540" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:48.754140" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:48.755492" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:48.755572" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:48.755196" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.755746" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:48.756993" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:49.026750" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:48.756612" elapsed="0.270499"/>
</kw>
<msg time="2026-04-28T03:06:49.027257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.756260" elapsed="0.271115"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:48.754781" elapsed="0.272804"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:49.028340" level="INFO">Executing command 'sudo ovs-vsctl add-br ovsbug_br_7414'.</msg>
<msg time="2026-04-28T03:06:49.132380" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:49.132679" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:49.132744" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:49.027951" elapsed="0.105051"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:49.133342" elapsed="0.000440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.134532" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:49.134085" elapsed="0.000513"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:49.134915" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:49.134717" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:49.134682" elapsed="0.000366"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:49.135283" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-28T03:06:49.135127" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:49.135104" elapsed="0.000306"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:49.135459" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:49.140401" elapsed="0.000216"/>
</kw>
<msg time="2026-04-28T03:06:49.140691" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:49.139640" elapsed="0.001150"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.141066" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.141307" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:49.135911" elapsed="0.005520"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:48.751892" elapsed="0.389671"/>
</kw>
<msg time="2026-04-28T03:06:49.141641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:48.751262" elapsed="0.390445"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>sudo ovs-vsctl add-br ${bridge}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:48.750703" elapsed="0.391121"/>
</kw>
<kw name="Modify Multi Port Body" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:49.143109" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/bug_7414/create_multiple_ports.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/bug_7414/create_multiple_ports.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:49.143385" level="INFO">${body} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1",
                "node": [
                    {
                        "node...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/bug_7414/create_multiple_ports.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:49.142855" elapsed="0.000567"/>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.152788" level="INFO">${uuid} = </msg>
<var>${uuid}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:49.150836" elapsed="0.002018"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:49.159172" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:49.159469" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:06:49.159766" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${controller_http_session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:49.153039" elapsed="0.006764"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.167651" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:49.166570" elapsed="0.001123"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:49.163886" elapsed="0.003865"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.168017" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:49.167790" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:49.163840" elapsed="0.004286"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.168671" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:49.168316" elapsed="0.000466"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:49.168880" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:49.160250" elapsed="0.008842"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.172401" level="INFO">${json_data} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:49.171917" elapsed="0.000513"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-28T03:06:49.172479" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:06:49.172668" level="INFO">${resp_json} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${resp_json}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-28T03:06:49.169385" elapsed="0.003310"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:49.173365" level="INFO">${topologies} = [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c...</msg>
<var>${topologies}</var>
<arg>${resp_json}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:49.173127" elapsed="0.000266"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-28T03:06:49.173770" level="INFO">${topology} = {'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c4...</msg>
<var>${topology}</var>
<arg>${topologies}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-28T03:06:49.173545" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:49.174180" level="INFO">${node_list} = [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/networ...</msg>
<var>${node_list}</var>
<arg>${topology}</arg>
<arg>node</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:49.173968" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.174636" level="INFO">[{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']", 'ovsdb:bridge-name': 'ovscon_br1', 'ovsdb:datapath-type': 'ovsdb:datapath-type-system', 'termination-point': [{'tp-id': 'ovscon_br1', 'ovsdb:port-uuid': '51203667-71a3-451c-8172-21739eec13fd', 'ovsdb:ingress-policing-burst': 0, 'ovsdb:name': 'ovscon_br1', 'ovsdb:interface-uuid': '3e6b1b62-e748-4a10-8e3f-d48aedf83ef4', 'ovsdb:ingress-policing-rate': 0, 'ovsdb:interface-type': 'ovsdb:interface-type-internal', 'ovsdb:mac-in-use': '26:42:56:a9:ca:4c', 'ovsdb:ofport': 65534, 'ovsdb:ifindex': 4}], 'ovsdb:datapath-id': '00:00:26:42:56:a9:ca:4c'}, {'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsdb:interface-type-tap'}, {'interface-type': 'ovsdb:interface-type-stt'}, {'interface-type': 'ovsdb:interface-type-internal'}, {'interface-type': 'ovsdb:interface-type-patch'}, {'interface-type': 'ovsdb:interface-type-lisp'}, {'interface-type': 'ovsdb:interface-type-geneve'}, {'interface-type': 'ovsdb:interface-type-gre'}, {'interface-type': 'ovsdb:interface-type-system'}], 'ovsdb:ovs-version': '2.17.11', 'ovsdb:connection-info': {'local-port': 6640, 'remote-port': 32962, 'local-ip': '10.30.170.159', 'remote-ip': '10.30.170.161'}, 'ovsdb:openvswitch-external-ids': [{'external-id-key': 'system-id', 'external-id-value': '3eb07ef3-5df0-4195-8cad-5c56eb67b298'}, {'external-id-key': 'hostname', 'external-id-value': 'ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d'}, {'external-id-key': 'rundir', 'external-id-value': '/var/run/openvswitch'}], 'ovsdb:datapath-type-entry': [{'datapath-type': 'ovsdb:datapath-type-netdev'}, {'datapath-type': 'ovsdb:datapath-type-system'}], 'ovsdb:manager-entry': [{'target': 'tcp:10.30.170.159:6640', 'number_of_connections': 1, 'connected': True}], 'ovsdb:managed-node-entry': [{'bridge-ref': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]</msg>
<arg>${node_list}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:49.174358" elapsed="0.000340"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:49.175258" level="INFO">${node_id} = ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_id}</var>
<arg>${node}</arg>
<arg>node-id</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:49.175082" elapsed="0.000203"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:49.177486" level="INFO">${node_uuid} = 9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_uuid}</var>
<arg>${node_id}</arg>
<arg>ovsdb://uuid/</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:49.175434" elapsed="0.002080"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:49.178239" level="FAIL">Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:06:49.178048" elapsed="0.000300">Dictionary does not contain key 'ovsdb:connection-info'.</status>
</kw>
<msg time="2026-04-28T03:06:49.178454" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:06:49.178498" level="INFO">${connection_info} = Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<var>${status}</var>
<var>${connection_info}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:49.177684" elapsed="0.000837"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:49.179226" level="FAIL">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:06:49.179035" elapsed="0.002237">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</status>
</kw>
<msg time="2026-04-28T03:06:49.181388" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:06:49.181433" level="INFO">${remote_ip} = ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<var>${status}</var>
<var>${remote_ip}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:49.178683" elapsed="0.002774"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.182075" level="FAIL">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<var>${uuid}</var>
<arg>'${remote_ip}' == '${ovs_system_ip}'</arg>
<arg>${node_uuid}</arg>
<arg>${uuid}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="FAIL" start="2026-04-28T03:06:49.181660" elapsed="0.000509">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<var name="${node}">{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network...</var>
<status status="FAIL" start="2026-04-28T03:06:49.174951" elapsed="0.007339">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</iter>
<var>${node}</var>
<value>@{node_list}</value>
<status status="FAIL" start="2026-04-28T03:06:49.174756" elapsed="0.007602">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</for>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-28T03:06:49.182418" elapsed="0.000019"/>
</return>
<var>${ovs_1_ovsdb_uuid}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="FAIL" start="2026-04-28T03:06:49.150368" elapsed="0.032157">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<var>${ovs_2_ovsdb_uuid}</var>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.188585" elapsed="0.000031"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_UUID</arg>
<arg>${ovs_1_ovsdb_uuid}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.188800" elapsed="0.000050"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_UUID</arg>
<arg>${ovs_2_ovsdb_uuid}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.189034" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_BRIDGE_NAME</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.189216" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_BRIDGE_NAME</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.189393" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_IP</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.189571" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_IP</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.189749" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_PORT_NAME</arg>
<arg>${ovs_1_port_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.189927" elapsed="0.000034"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_PORT_NAME</arg>
<arg>${ovs_2_port_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.190125" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RFC8040_TOPO_API}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.190296" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.190455" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.190609" elapsed="0.000019"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.190763" elapsed="0.000019"/>
</kw>
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-04-28T03:06:49.191072" elapsed="0.000024"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.191232" elapsed="0.000020"/>
</kw>
<return>
<value>${body}</value>
<status status="NOT RUN" start="2026-04-28T03:06:49.191293" elapsed="0.000016"/>
</return>
<var>${body}</var>
<arg>vtep1</arg>
<arg>vtep1</arg>
<arg>${bridge}</arg>
<doc>Updates two port names for the given ovsbug_br_7414 in config store</doc>
<status status="FAIL" start="2026-04-28T03:06:49.142371" elapsed="0.049027">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>Verify TEP Creation on OVS</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.191572" elapsed="0.000021"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>Verify TEP Creation on OVS</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.191743" elapsed="0.000020"/>
</kw>
<kw name="Run Keywords" owner="BuiltIn" type="TEARDOWN">
<kw name="Test Teardown">
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:49.202402" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:49.202606" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:49.202830" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:49.193237" elapsed="0.009629"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.210100" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:49.209230" elapsed="0.000910"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:49.206487" elapsed="0.003709"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.210438" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:49.210235" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:49.206457" elapsed="0.004087"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.211127" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:49.210749" elapsed="0.000454"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:49.211263" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:49.203276" elapsed="0.008168"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:49.218812" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:49.219038" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:06:49.219170" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:49.211643" elapsed="0.007553"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.225933" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:49.224805" elapsed="0.001191"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:49.222118" elapsed="0.003935"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.226292" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:49.226091" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:49.222087" elapsed="0.004380"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.227054" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:49.226662" elapsed="0.000511"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:49.227236" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:49.219490" elapsed="0.007929"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:06:49.192923" elapsed="0.034566"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:49.232095" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:49.231673" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:49.231646" elapsed="0.000562"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:49.232598" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:49.232739" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:49.232405" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.233589" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:49.233052" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:49.234319" level="INFO">${conn_id} = 208</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:49.233915" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:49.235349" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:49.235425" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:49.234990" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:49.235610" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:49.237587" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:49.537358" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:49.236562" elapsed="0.301086"/>
</kw>
<msg time="2026-04-28T03:06:49.538022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:49.236195" elapsed="0.301939"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:49.234553" elapsed="0.303726"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:49.538809" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:06:50.735385" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:50.735762" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:50.735864" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:49.538536" elapsed="1.197386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:50.736426" elapsed="0.000674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:50.738255" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsbug_br_7414
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:50.737558" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:50.738865" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:50.738570" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:50.738518" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:50.739421" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:06:50.739183" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:50.739149" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:50.739686" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:50.746820" elapsed="0.000517"/>
</kw>
<msg time="2026-04-28T03:06:50.747715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:50.745573" elapsed="0.002298"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:50.748253" elapsed="0.000051"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:50.748606" elapsed="0.000047"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:50.740398" elapsed="0.008391"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:49.230881" elapsed="1.518226"/>
</kw>
<msg time="2026-04-28T03:06:50.749363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:49.230105" elapsed="1.519399"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:49.229377" elapsed="1.520300"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:50.751977" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:50.751692" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:50.751673" elapsed="0.000389"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:50.752334" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:50.752435" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:50.752203" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:50.753043" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:50.752603" elapsed="0.000488"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:50.753625" level="INFO">${conn_id} = 209</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:50.753239" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:50.754614" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:50.754691" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:50.754285" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:50.754863" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:50.757133" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:51.043004" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:50.756012" elapsed="0.287211"/>
</kw>
<msg time="2026-04-28T03:06:51.043517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:50.755437" elapsed="0.288174"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:50.753858" elapsed="0.289875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.044193" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:06:51.127688" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:06:51.128087" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:51.128192" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:51.043964" elapsed="0.084280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:51.128751" elapsed="0.000598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.130467" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:51.129760" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:51.131063" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:51.130736" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.130683" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:51.131572" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-28T03:06:51.131337" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.131302" elapsed="0.000513"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:51.131895" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:51.139043" elapsed="0.000223"/>
</kw>
<msg time="2026-04-28T03:06:51.139428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.138185" elapsed="0.001390"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.139735" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.139918" elapsed="0.000039"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:51.132621" elapsed="0.007406"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:50.751138" elapsed="0.388983"/>
</kw>
<msg time="2026-04-28T03:06:51.140174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:50.750571" elapsed="0.389663"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:50.750047" elapsed="0.390265"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:06:49.228799" elapsed="1.911570"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.142637" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:51.142357" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.142336" elapsed="0.000382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.143014" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:51.143124" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:51.142858" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.143671" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:51.143293" elapsed="0.000423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.144278" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:51.143860" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.145524" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:51.145607" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:51.145232" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.145813" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.147331" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:51.421311" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:51.146669" elapsed="0.274825"/>
</kw>
<msg time="2026-04-28T03:06:51.421605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.146321" elapsed="0.275414"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:51.144509" elapsed="0.277408"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.422621" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:51.444778" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:51.445125" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:51.445221" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:51.422271" elapsed="0.023000"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:51.445673" elapsed="0.000546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.447753" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:51.446888" elapsed="0.000989"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:51.448484" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:51.448152" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.448080" elapsed="0.000615"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:51.449213" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-28T03:06:51.448854" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.448814" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:51.449501" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:51.455234" elapsed="0.000257"/>
</kw>
<msg time="2026-04-28T03:06:51.455539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.454715" elapsed="0.000893"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.455760" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.455914" elapsed="0.000042"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:51.450267" elapsed="0.005756"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:51.141776" elapsed="0.314339"/>
</kw>
<msg time="2026-04-28T03:06:51.456169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.141165" elapsed="0.315069"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:51.140601" elapsed="0.315729"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.458595" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:51.458306" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.458283" elapsed="0.000404"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.458988" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:51.459094" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:51.458832" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.459885" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:51.459264" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.460494" level="INFO">${conn_id} = 211</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:51.460105" elapsed="0.000415"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.461467" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:51.461544" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:51.461184" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.461719" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.463262" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:51.772753" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:51.462579" elapsed="0.310481"/>
</kw>
<msg time="2026-04-28T03:06:51.773450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.462225" elapsed="0.311377"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:51.460731" elapsed="0.313059"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.774579" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:06:51.837904" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:51.838509" level="INFO">${stdout} =  * Exiting ovs-vswitchd (7422)
 * Exiting ovsdb-server (7405)</msg>
<msg time="2026-04-28T03:06:51.838610" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:51.774195" elapsed="0.064472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:51.839302" elapsed="0.000830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.841369" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:51.840585" elapsed="0.000878"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:51.842035" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:51.841663" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.841603" elapsed="0.000601"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:51.842557" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-28T03:06:51.842320" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.842287" elapsed="0.000475"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:51.842837" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:51.852789" elapsed="0.002010"/>
</kw>
<msg time="2026-04-28T03:06:51.855052" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.852031" elapsed="0.003255"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.855848" elapsed="0.000122"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.856302" elapsed="0.000048"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:51.843609" elapsed="0.012938"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:51.457698" elapsed="0.399094"/>
</kw>
<msg time="2026-04-28T03:06:51.857006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.457121" elapsed="0.400037"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:51.456562" elapsed="0.400791"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:51.862906" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:51.862437" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:51.862389" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.863511" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:51.863667" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:51.863292" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.864772" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:51.863911" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.865684" level="INFO">${conn_id} = 212</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:51.865110" elapsed="0.000610"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:51.867083" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:51.867413" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:51.866639" elapsed="0.000809"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.867664" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:51.870004" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:52.158104" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:51.868921" elapsed="0.289378"/>
</kw>
<msg time="2026-04-28T03:06:52.158422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.868389" elapsed="0.290167"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:51.866043" elapsed="0.292695"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.159462" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:06:52.172270" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:52.172537" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:52.172636" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:52.159101" elapsed="0.013586"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:52.173117" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:52.174648" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:52.174003" elapsed="0.000738"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:52.175241" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:52.174917" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:52.174865" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:52.175749" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:06:52.175520" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:52.175487" elapsed="0.000443"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:52.176044" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:52.182903" elapsed="0.000347"/>
</kw>
<msg time="2026-04-28T03:06:52.183311" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.182110" elapsed="0.001298"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:52.183618" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:52.183833" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:52.176751" elapsed="0.007219"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:51.861134" elapsed="0.322964"/>
</kw>
<msg time="2026-04-28T03:06:52.184170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:51.859427" elapsed="0.324822"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:51.857888" elapsed="0.326467"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:52.187392" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:52.187015" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:52.186988" elapsed="0.000513"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.187883" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:52.188045" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:52.187695" elapsed="0.000457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:52.188913" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:52.188356" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.189738" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:52.189214" elapsed="0.000560"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:52.191109" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:52.191216" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:52.190695" elapsed="0.000554"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.191473" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.193689" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:52.504492" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:52.192698" elapsed="0.311915"/>
</kw>
<msg time="2026-04-28T03:06:52.504698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.192187" elapsed="0.312616"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:52.190094" elapsed="0.314885"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.505482" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:06:52.670498" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:52.670750" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:06:52.670852" level="INFO">${stderr} = 2026-04-28T03:06:52Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:52Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:52Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:52.505220" elapsed="0.165685"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:52.671306" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:52.672772" level="INFO">2026-04-28T03:06:52Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:52Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:52Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:52.672175" elapsed="0.000724"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:52.673365" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:52.673097" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:52.673048" elapsed="0.000470"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:52.673865" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:52.673633" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:52.673600" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:52.674154" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:52.681176" elapsed="0.000233"/>
</kw>
<msg time="2026-04-28T03:06:52.681453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.680056" elapsed="0.001459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:52.681668" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:52.681820" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:52.674804" elapsed="0.007097"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:52.186223" elapsed="0.495797"/>
</kw>
<msg time="2026-04-28T03:06:52.682130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.185375" elapsed="0.496820"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:52.184616" elapsed="0.497662"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:06:49.228227" elapsed="3.454109"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:52.685272" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:52.685004" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:52.684984" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.685614" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:52.685715" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:52.685491" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:52.686276" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:52.685883" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.686834" level="INFO">${conn_id} = 214</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:52.686470" elapsed="0.000390"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:52.687823" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:52.687899" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:52.687504" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.688097" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.690389" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:52.982907" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:52.689225" elapsed="0.293907"/>
</kw>
<msg time="2026-04-28T03:06:52.983427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.688651" elapsed="0.294870"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:52.687095" elapsed="0.296552"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:52.984135" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:06:54.183689" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:54.184116" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:54.184223" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:52.983871" elapsed="1.200408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:54.184747" elapsed="0.000656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.186483" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsbug_br_7414
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:54.185807" elapsed="0.000921"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:54.187245" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:54.186911" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.186858" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:54.187751" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:06:54.187518" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.187484" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:54.188050" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:54.194308" elapsed="0.000209"/>
</kw>
<msg time="2026-04-28T03:06:54.194667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.193579" elapsed="0.001163"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.194894" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.195068" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:54.188750" elapsed="0.006401"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:52.684424" elapsed="1.510820"/>
</kw>
<msg time="2026-04-28T03:06:54.195298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:52.683849" elapsed="1.511509"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:52.683351" elapsed="1.512089"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.197772" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:54.197493" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.197322" elapsed="0.000529"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.198147" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:54.198251" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:54.198009" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.198799" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:54.198419" elapsed="0.000426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.199401" level="INFO">${conn_id} = 215</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:54.199015" elapsed="0.000412"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.200650" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:54.200728" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:54.200312" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.200926" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.202803" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:54.489790" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:54.201836" elapsed="0.288648"/>
</kw>
<msg time="2026-04-28T03:06:54.490822" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.201489" elapsed="0.289548"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:54.199637" elapsed="0.291537"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.491669" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:06:54.524919" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:06:54.525108" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:54.525172" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:54.491410" elapsed="0.033808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:54.525569" elapsed="0.000719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.527351" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:54.526689" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:54.527902" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:54.527617" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.527566" elapsed="0.000530"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:54.528446" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-28T03:06:54.528213" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.528180" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:54.528699" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:54.534546" elapsed="0.000201"/>
</kw>
<msg time="2026-04-28T03:06:54.534892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.533908" elapsed="0.001075"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.535141" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.535296" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:54.529435" elapsed="0.005943"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:54.196743" elapsed="0.338728"/>
</kw>
<msg time="2026-04-28T03:06:54.535524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.196177" elapsed="0.339408"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:54.195632" elapsed="0.340033"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:06:52.682978" elapsed="1.852746"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.537865" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:54.537601" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.537583" elapsed="0.000378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.538246" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:54.538348" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:54.538110" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.539222" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:54.538518" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.539800" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:54.539426" elapsed="0.000399"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.540767" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:54.540883" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:54.540477" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.541077" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.542554" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:54.811388" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:54.541908" elapsed="0.269632"/>
</kw>
<msg time="2026-04-28T03:06:54.811640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.541561" elapsed="0.270193"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:54.540064" elapsed="0.271850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.812518" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:06:54.835054" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:54.835297" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:54.835392" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:54.812216" elapsed="0.023224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:54.835780" elapsed="0.000446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.836904" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:54.836487" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:54.837292" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:54.837099" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.837066" elapsed="0.000324"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:54.837607" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-28T03:06:54.837462" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.837441" elapsed="0.000283"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:54.837770" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:54.842265" elapsed="0.000467"/>
</kw>
<msg time="2026-04-28T03:06:54.842794" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.841492" elapsed="0.001390"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.843127" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.843344" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:54.838222" elapsed="0.005234"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:54.537046" elapsed="0.306534"/>
</kw>
<msg time="2026-04-28T03:06:54.843653" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.536455" elapsed="0.307278"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:54.535911" elapsed="0.307928"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:54.846590" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:54.846325" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:54.846307" elapsed="0.000362"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.846958" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:54.847064" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:54.846810" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.847676" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:54.847296" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.848262" level="INFO">${conn_id} = 217</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:54.847871" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:54.849224" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:54.849300" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:54.848922" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.849472" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:54.850966" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:55.122811" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:54.850312" elapsed="0.273140"/>
</kw>
<msg time="2026-04-28T03:06:55.123545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.849962" elapsed="0.273686"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:54.848496" elapsed="0.275291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.124347" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:06:55.389638" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:55.390116" level="INFO">${stdout} =  * Exiting ovs-vswitchd (3166)
 * Exiting ovsdb-server (3149)</msg>
<msg time="2026-04-28T03:06:55.390221" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:55.124071" elapsed="0.266203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:55.390769" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:55.392635" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:55.391929" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:55.393314" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:55.393002" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:55.392916" elapsed="0.000560"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:55.393825" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:06:55.393593" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:55.393560" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:55.394128" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:55.401843" elapsed="0.000595"/>
</kw>
<msg time="2026-04-28T03:06:55.402537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.400574" elapsed="0.002108"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:55.403067" elapsed="0.000050"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:55.403419" elapsed="0.000044"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:55.394829" elapsed="0.008771"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:54.845540" elapsed="0.558262"/>
</kw>
<msg time="2026-04-28T03:06:55.403918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:54.844883" elapsed="0.559206"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:54.844130" elapsed="0.560443"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:55.407113" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:55.406832" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:55.406813" elapsed="0.000380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.407465" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:55.407565" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:55.407330" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:55.408121" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:55.407731" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.408706" level="INFO">${conn_id} = 218</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:55.408313" elapsed="0.000438"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:55.409691" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:55.409766" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:55.409411" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.409957" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.411500" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:55.683605" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:55.410777" elapsed="0.273029"/>
</kw>
<msg time="2026-04-28T03:06:55.683969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.410432" elapsed="0.273705"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:55.408994" elapsed="0.275373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.685450" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:06:55.698173" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:55.698426" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:55.698521" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:55.685032" elapsed="0.013539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:55.698919" elapsed="0.000533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:55.700487" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:55.699846" elapsed="0.000732"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:55.701102" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:55.700781" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:55.700726" elapsed="0.000553"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:55.701647" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:55.701413" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:55.701376" elapsed="0.000450"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:55.701896" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:55.707737" elapsed="0.000345"/>
</kw>
<msg time="2026-04-28T03:06:55.708144" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.706925" elapsed="0.001307"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:55.708450" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:55.708755" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:55.702635" elapsed="0.006235"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:55.406280" elapsed="0.302745"/>
</kw>
<msg time="2026-04-28T03:06:55.709098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.405683" elapsed="0.303496"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:55.405089" elapsed="0.304202"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:55.712340" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:55.711972" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:55.711926" elapsed="0.000522"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.712880" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:55.713084" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:55.712689" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:55.713898" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:55.713364" elapsed="0.000629"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.714755" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:55.714210" elapsed="0.000581"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:55.716116" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:55.716224" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:55.715683" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.716463" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:55.718246" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:56.023144" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:55.717580" elapsed="0.305791"/>
</kw>
<msg time="2026-04-28T03:06:56.023488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.717202" elapsed="0.306420"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:55.715114" elapsed="0.308709"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.024569" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:06:56.117623" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:56.117903" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:06:56.118051" level="INFO">${stderr} = 2026-04-28T03:06:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:56Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:56.024192" elapsed="0.093931"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:56.118509" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.120137" level="INFO">2026-04-28T03:06:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:06:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.119457" elapsed="0.000909"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.120887" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.120553" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.120496" elapsed="0.000589"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:56.121457" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-28T03:06:56.121206" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.121170" elapsed="0.000475"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.121716" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:56.127724" elapsed="0.000387"/>
</kw>
<msg time="2026-04-28T03:06:56.128173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.126863" elapsed="0.001402"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.128478" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.128710" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:56.122444" elapsed="0.006379"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:55.711132" elapsed="0.417840"/>
</kw>
<msg time="2026-04-28T03:06:56.129052" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:55.710326" elapsed="0.418810"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:55.709558" elapsed="0.419690"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:06:52.682550" elapsed="3.446778"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:49.227686" elapsed="6.901716"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.131084" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:56.130438" elapsed="0.000683"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:06:56.131424" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.131223" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.131199" elapsed="0.000308"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:06:56.131722" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.133314" level="FAIL">'['7414', 'southbound']' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:56.132780" elapsed="0.000635">'['7414', 'southbound']' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:06:56.133555" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:06:56.132273" elapsed="0.001316"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.134302" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:56.133810" elapsed="0.000527"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.134975" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:56.134552" elapsed="0.000460"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.135615" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:56.135217" elapsed="0.000433"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.136406" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']

Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:06:56.135848" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.137062" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.136708" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.137865" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:06:56.137504" elapsed="0.000408"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:56.137267" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.137243" elapsed="0.000743"/>
</if>
<arg>${TEST_TAGS}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:06:56.129882" elapsed="0.008149"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:49.192549" elapsed="6.945538"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:56.141623" level="FAIL">Variable '${body}' not found.</msg>
<arg>session</arg>
<arg>url=${RFC8040_TOPO_API}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-28T03:06:56.138239" elapsed="0.003423">Variable '${body}' not found.</status>
</kw>
<arg>Test Teardown</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_TOPO_API}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="FAIL" start="2026-04-28T03:06:49.192042" elapsed="6.949728">Variable '${body}' not found.</status>
</kw>
<doc>To help validate bug 7414, this test case will send a single rest request to create two
ports (one for each of two OVS instances connected). The port names will be the same.
If the bug happens, the request would be accepted, but internally the two creations are seen as the
same and there is a conflict such that neither ovs will receive the port create.</doc>
<tag>7414</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:06:45.631829" elapsed="10.510051">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)

Also teardown failed:
Variable '${body}' not found.</status>
</test>
<test id="s1-s6-t2" name="Bug 7414 Different Endpoint Name" line="71">
<kw name="Test Setup" type="SETUP">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:06:56.146133" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:06:56.145860" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.147362" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.147250" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.147230" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.151897" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.151792" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.151775" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.152966" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:06:56.152560" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.153438" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:06:56.153146" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:06:56.153505" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:06:56.153657" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:06:56.152197" elapsed="0.001484"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.158919" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.158813" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.158795" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.160287" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.160134" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.160117" elapsed="0.000316"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:56.161297" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:56.160597" elapsed="0.000728"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.161814" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:56.161515" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.187982" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:06:56.163351" elapsed="0.024826"/>
</kw>
<msg time="2026-04-28T03:06:56.188331" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:06:56.188377" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:56.162050" elapsed="0.026363"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.215725" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "D "i "f "f "e "r "e "n "t "[C "E "n "d "p "o "i "n "t "[C "N "a "m "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:06:56.189801" elapsed="0.026365"/>
</kw>
<msg time="2026-04-28T03:06:56.216526" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:06:56.216683" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "D "i "f "f...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:56.188647" elapsed="0.028123"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.217757" elapsed="0.000102"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:56.217112" elapsed="0.001038"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.217060" elapsed="0.001152"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.219982" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "D "i "f "f "e "r "e "n "t "[C "E "n "d "p "o "i "n "t "[C "N "a "m "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.218521" elapsed="0.001727"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.221179" elapsed="0.000111"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:56.220438" elapsed="0.001106"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.220397" elapsed="0.001207"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:06:56.221680" elapsed="0.000063"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:56.226325" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:06:56.226532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.225789" elapsed="0.000808"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.226799" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.227025" elapsed="0.000030"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:56.224175" elapsed="0.003014"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:06:56.222282" elapsed="0.005001"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:06:56.159754" elapsed="0.067627"/>
</kw>
<msg time="2026-04-28T03:06:56.227473" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:56.227515" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "D "i "f "f...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:56.159147" elapsed="0.068405"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:06:56.227736" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:06:56.227628" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.227610" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.228255" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.228641" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.228713" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:06:56.158481" elapsed="0.070338"/>
</kw>
<msg time="2026-04-28T03:06:56.228912" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:06:56.229018" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "4 "1 "4 "[C "D "i "f "f...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:56.154080" elapsed="0.074977"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.229429" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:56.229178" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.229160" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:06:56.153928" elapsed="0.075599"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:06:56.153741" elapsed="0.075819"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:06:56.151440" elapsed="0.078175"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:06:56.146962" elapsed="0.082710"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:56.146534" elapsed="0.083182"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:06:56.143822" elapsed="0.085947"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:56.143511" elapsed="0.086304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.230249" level="INFO">${bridge} = ovsbug_br_7414</msg>
<var>${bridge}</var>
<arg>ovsbug_br_7414</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:56.229979" elapsed="0.000295"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.234604" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:56.234342" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.234323" elapsed="0.000361"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.234975" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:56.235097" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:56.234823" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.235656" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.235275" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.236253" level="INFO">${conn_id} = 220</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:56.235850" elapsed="0.000428"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.237276" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:56.237353" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:56.236975" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.237527" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.238685" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:56.505699" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:56.238371" elapsed="0.267551"/>
</kw>
<msg time="2026-04-28T03:06:56.506065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.238022" elapsed="0.268165"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:56.236487" elapsed="0.269884"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.507085" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:06:56.530063" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:56.530318" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:56.530417" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:56.506708" elapsed="0.023759"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:56.531026" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.532650" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.531930" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.533271" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.532960" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.532876" elapsed="0.000556"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:56.533781" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:56.533549" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.533515" elapsed="0.000481"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.534073" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:56.541542" elapsed="0.000152"/>
</kw>
<msg time="2026-04-28T03:06:56.541737" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.540502" elapsed="0.001296"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.541965" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.542120" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:56.534761" elapsed="0.007440"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:56.233776" elapsed="0.308520"/>
</kw>
<msg time="2026-04-28T03:06:56.542349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.231033" elapsed="0.311361"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:56.230467" elapsed="0.312009"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.544652" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:56.544364" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.544343" elapsed="0.000390"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.545037" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:56.545144" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:56.544878" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.545719" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.545320" elapsed="0.000446"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.546328" level="INFO">${conn_id} = 221</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:56.545914" elapsed="0.000441"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.547250" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:56.547325" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:56.546961" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.547498" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.548710" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:56.822973" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:56.548382" elapsed="0.274960"/>
</kw>
<msg time="2026-04-28T03:06:56.823436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.548010" elapsed="0.275514"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:56.546562" elapsed="0.277098"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.824204" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:06:56.846703" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:56.846993" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:56.847096" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:56.823910" elapsed="0.023236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:56.847502" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.849108" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.848411" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.849668" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:56.849379" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.849328" elapsed="0.000498"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:56.850210" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:06:56.849973" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.849910" elapsed="0.000485"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:56.850469" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:56.857430" elapsed="0.000327"/>
</kw>
<msg time="2026-04-28T03:06:56.857852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.856213" elapsed="0.001809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.858360" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.858699" elapsed="0.000043"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:56.851173" elapsed="0.007702"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:56.543816" elapsed="0.315296"/>
</kw>
<msg time="2026-04-28T03:06:56.859227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.543247" elapsed="0.316085"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:56.542677" elapsed="0.316821"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:56.871278" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:56.871012" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:56.870994" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.871625" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:56.871728" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:56.871500" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.872294" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:56.871897" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.872905" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:56.872515" elapsed="0.000415"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:56.873867" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:56.873962" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:56.873586" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.874140" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:56.875459" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:57.138391" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:05:57 UTC 2026

  System load:  0.14               Processes:             120
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:56.875142" elapsed="0.263504"/>
</kw>
<msg time="2026-04-28T03:06:57.138809" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.874619" elapsed="0.264388"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:56.873200" elapsed="0.266087"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:57.140298" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:57.213430" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:57.213685" level="INFO">${stdout} = da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:57.213783" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:57.139760" elapsed="0.074074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:57.214239" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:57.215780" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:57.215152" elapsed="0.000719"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:57.216379" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:57.216080" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:57.216026" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:57.216915" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-28T03:06:57.216685" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:57.216651" elapsed="0.000478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:57.217202" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:57.224558" elapsed="0.000349"/>
</kw>
<msg time="2026-04-28T03:06:57.225050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:57.223219" elapsed="0.001977"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:57.225611" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:57.225764" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:57.217873" elapsed="0.007971"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:56.870472" elapsed="0.355478"/>
</kw>
<msg time="2026-04-28T03:06:57.226007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:56.869901" elapsed="0.356154"/>
</kw>
<msg time="2026-04-28T03:06:57.226171" level="INFO">${output} = da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:56.869383" elapsed="0.356814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:57.226592" level="INFO">da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:57.226346" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:06:57.227319" level="FAIL">'da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:06:57.226914" elapsed="0.000783">'da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:06:57.226703" elapsed="0.001072">'da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:06:57.226686" elapsed="0.001123">'da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:57.228042" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:57.227878" elapsed="0.000221"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:06:57.227861" elapsed="0.000261"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:06:57.228153" elapsed="0.000015"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:06:56.868946" elapsed="0.359315">'da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:06:57.228323" elapsed="0.000015"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:06:56.861098" elapsed="0.367318">'da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:58.246775" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:58.246391" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:58.246360" elapsed="0.000534"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.247312" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:58.247465" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:58.247108" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:58.248170" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:58.247701" elapsed="0.000519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.248855" level="INFO">${conn_id} = 223</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:58.248446" elapsed="0.000435"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:58.249897" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:58.249998" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:58.249526" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.250177" elapsed="0.000636"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.251840" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:58.789506" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:58.251429" elapsed="0.538226"/>
</kw>
<msg time="2026-04-28T03:06:58.789736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.250998" elapsed="0.538821"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:58.249115" elapsed="0.540852"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.790460" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:58.843359" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:58.843562" level="INFO">${stdout} = da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:58.843609" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:58.790204" elapsed="0.053430"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:58.844017" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:58.845832" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:58.845021" elapsed="0.000951"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:58.846514" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:58.846162" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:58.846111" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:58.847115" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:06:58.846828" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:58.846793" elapsed="0.000517"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:58.847384" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:58.854492" elapsed="0.000210"/>
</kw>
<msg time="2026-04-28T03:06:58.854764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.853706" elapsed="0.001150"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:58.855090" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:58.855308" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:58.848110" elapsed="0.007321"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:58.245776" elapsed="0.609783"/>
</kw>
<msg time="2026-04-28T03:06:58.855634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.245012" elapsed="0.610688"/>
</kw>
<msg time="2026-04-28T03:06:58.855854" level="INFO">${output} = da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:58.244461" elapsed="0.611429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:58.856509" level="INFO">da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:58.856120" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:58.856990" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:58.856669" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:58.856644" elapsed="0.000907"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:58.857925" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:58.857630" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:58.857607" elapsed="0.000454"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:58.858106" elapsed="0.000038"/>
</return>
<msg time="2026-04-28T03:06:58.858316" level="INFO">${output} = da95cb0a-55b1-484e-9ce4-5d57dae84b0d
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:06:58.243843" elapsed="0.614512"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:58.858427" elapsed="0.000035"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:06:58.229277" elapsed="0.629313"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:56.859845" elapsed="1.998815"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:58.870256" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:58.869987" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:58.869968" elapsed="0.000368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.870620" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:58.870769" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:58.870490" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:58.871336" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:58.870955" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.871907" level="INFO">${conn_id} = 224</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:58.871531" elapsed="0.000414"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:58.872843" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:58.872920" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:58.872578" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.873111" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:58.874437" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:59.142441" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:58.873953" elapsed="0.268650"/>
</kw>
<msg time="2026-04-28T03:06:59.142704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.873594" elapsed="0.269210"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:58.872184" elapsed="0.270808"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.143588" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:06:59.216552" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:59.216853" level="INFO">${stdout} = e27e189d-9f3a-42d9-970a-16dd2f46082c
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:06:59.216990" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:59.143287" elapsed="0.073759"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:59.217466" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.219069" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.218394" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.219625" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:59.219336" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.219287" elapsed="0.000494"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:59.220223" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:06:59.219897" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.219863" elapsed="0.000530"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.220439" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:59.224851" elapsed="0.000229"/>
</kw>
<msg time="2026-04-28T03:06:59.225140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.224058" elapsed="0.001173"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.225441" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.225656" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:59.220877" elapsed="0.004891"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:58.869445" elapsed="0.356449"/>
</kw>
<msg time="2026-04-28T03:06:59.225989" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:58.868878" elapsed="0.357178"/>
</kw>
<msg time="2026-04-28T03:06:59.226552" level="INFO">${output} = e27e189d-9f3a-42d9-970a-16dd2f46082c
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:58.868364" elapsed="0.358224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.227170" level="INFO">e27e189d-9f3a-42d9-970a-16dd2f46082c
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.226796" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:06:59.227630" elapsed="0.000521"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:59.227328" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.227303" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.228617" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:59.228323" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.228300" elapsed="0.000430"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:59.228775" elapsed="0.000038"/>
</return>
<msg time="2026-04-28T03:06:59.229007" level="INFO">${output} = e27e189d-9f3a-42d9-970a-16dd2f46082c
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:06:58.867902" elapsed="0.361142"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:06:59.229115" elapsed="0.000037"/>
</return>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:06:58.859625" elapsed="0.369655"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:06:58.858883" elapsed="0.370466"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.232327" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:59.231906" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.231882" elapsed="0.000538"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.232692" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:59.232794" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:59.232560" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.233367" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovsbug_br_7414" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.232979" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.234181" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.233563" elapsed="0.000644"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.235098" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:59.235174" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:59.234816" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.235348" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.236518" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:59.497531" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:59.236201" elapsed="0.261524"/>
</kw>
<msg time="2026-04-28T03:06:59.497834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.235826" elapsed="0.262128"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:59.234426" elapsed="0.263812"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.498883" level="INFO">Executing command 'sudo ovs-vsctl add-br ovsbug_br_7414'.</msg>
<msg time="2026-04-28T03:06:59.541658" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:59.541978" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:59.542112" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:59.498543" elapsed="0.043626"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:59.542604" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.544353" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.543589" elapsed="0.000871"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.545044" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:59.544649" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.544594" elapsed="0.000671"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:59.545699" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:06:59.545425" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.545384" elapsed="0.000522"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.546029" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:59.551846" elapsed="0.000310"/>
</kw>
<msg time="2026-04-28T03:06:59.552241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.551162" elapsed="0.001194"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.552593" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.552812" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:59.546826" elapsed="0.006099"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:59.231173" elapsed="0.321912"/>
</kw>
<msg time="2026-04-28T03:06:59.553160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.230381" elapsed="0.322843"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl add-br ${bridge}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:59.229628" elapsed="0.323706"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.556975" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:59.556559" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.556223" elapsed="0.000868"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.557510" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:06:59.557663" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:06:59.557289" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.558481" level="INFO">Attempting to execute command "sudo ovs-vsctl add-br ovsbug_br_7414" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.557906" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.559318" level="INFO">${conn_id} = 226</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.558758" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.560607" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:06:59.560683" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:06:59.560277" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.560857" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.562173" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:06:59.871276" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:06:59.561791" elapsed="0.309660"/>
</kw>
<msg time="2026-04-28T03:06:59.871552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.561427" elapsed="0.310225"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:06:59.559670" elapsed="0.312154"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:06:59.872485" level="INFO">Executing command 'sudo ovs-vsctl add-br ovsbug_br_7414'.</msg>
<msg time="2026-04-28T03:06:59.936111" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:06:59.936467" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:06:59.936604" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:06:59.872165" elapsed="0.064497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:06:59.937155" elapsed="0.000695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.939075" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.938326" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.939814" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:06:59.939435" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.939375" elapsed="0.000714"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:06:59.940492" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-28T03:06:59.940224" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.940186" elapsed="0.000534"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.940803" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:06:59.946434" elapsed="0.000153"/>
</kw>
<msg time="2026-04-28T03:06:59.946632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.945800" elapsed="0.000903"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.946867" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.947043" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:06:59.941591" elapsed="0.005538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:06:59.555426" elapsed="0.391797"/>
</kw>
<msg time="2026-04-28T03:06:59.947276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:06:59.554501" elapsed="0.392822"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>sudo ovs-vsctl add-br ${bridge}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:06:59.553622" elapsed="0.393785"/>
</kw>
<kw name="Modify Multi Port Body" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:06:59.948323" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/bug_7414/create_multiple_ports.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/bug_7414/create_multiple_ports.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:06:59.948610" level="INFO">${body} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1",
                "node": [
                    {
                        "node...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/bug_7414/create_multiple_ports.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:06:59.948156" elapsed="0.000482"/>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.956798" level="INFO">${uuid} = </msg>
<var>${uuid}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:06:59.954838" elapsed="0.001987"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:06:59.964503" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:06:59.964887" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:06:59.965133" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${controller_http_session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:59.957003" elapsed="0.008169"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.972612" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:59.971529" elapsed="0.001125"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:59.968828" elapsed="0.003882"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.972975" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:06:59.972748" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:06:59.968796" elapsed="0.004290"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.973652" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.973294" elapsed="0.000569"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:06:59.973965" elapsed="0.000061"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:06:59.965578" elapsed="0.008629"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.977900" level="INFO">${json_data} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:06:59.977441" elapsed="0.000488"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-28T03:06:59.977996" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:06:59.978191" level="INFO">${resp_json} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${resp_json}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-28T03:06:59.974506" elapsed="0.003720"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:59.978612" level="INFO">${topologies} = [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c...</msg>
<var>${topologies}</var>
<arg>${resp_json}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.978385" elapsed="0.000255"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-28T03:06:59.979041" level="INFO">${topology} = {'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c4...</msg>
<var>${topology}</var>
<arg>${topologies}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.978790" elapsed="0.000278"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:59.979440" level="INFO">${node_list} = [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/networ...</msg>
<var>${node_list}</var>
<arg>${topology}</arg>
<arg>node</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.979217" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.979899" level="INFO">[{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']", 'ovsdb:bridge-name': 'ovscon_br1', 'ovsdb:datapath-type': 'ovsdb:datapath-type-system', 'termination-point': [{'tp-id': 'ovscon_br1', 'ovsdb:port-uuid': '51203667-71a3-451c-8172-21739eec13fd', 'ovsdb:ingress-policing-burst': 0, 'ovsdb:name': 'ovscon_br1', 'ovsdb:interface-uuid': '3e6b1b62-e748-4a10-8e3f-d48aedf83ef4', 'ovsdb:ingress-policing-rate': 0, 'ovsdb:interface-type': 'ovsdb:interface-type-internal', 'ovsdb:mac-in-use': '26:42:56:a9:ca:4c', 'ovsdb:ofport': 65534, 'ovsdb:ifindex': 4}], 'ovsdb:datapath-id': '00:00:26:42:56:a9:ca:4c'}, {'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsdb:interface-type-tap'}, {'interface-type': 'ovsdb:interface-type-stt'}, {'interface-type': 'ovsdb:interface-type-internal'}, {'interface-type': 'ovsdb:interface-type-patch'}, {'interface-type': 'ovsdb:interface-type-lisp'}, {'interface-type': 'ovsdb:interface-type-geneve'}, {'interface-type': 'ovsdb:interface-type-gre'}, {'interface-type': 'ovsdb:interface-type-system'}], 'ovsdb:ovs-version': '2.17.11', 'ovsdb:connection-info': {'local-port': 6640, 'remote-port': 32962, 'local-ip': '10.30.170.159', 'remote-ip': '10.30.170.161'}, 'ovsdb:openvswitch-external-ids': [{'external-id-key': 'system-id', 'external-id-value': '3eb07ef3-5df0-4195-8cad-5c56eb67b298'}, {'external-id-key': 'hostname', 'external-id-value': 'ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d'}, {'external-id-key': 'rundir', 'external-id-value': '/var/run/openvswitch'}], 'ovsdb:datapath-type-entry': [{'datapath-type': 'ovsdb:datapath-type-netdev'}, {'datapath-type': 'ovsdb:datapath-type-system'}], 'ovsdb:manager-entry': [{'target': 'tcp:10.30.170.159:6640', 'number_of_connections': 1, 'connected': True}], 'ovsdb:managed-node-entry': [{'bridge-ref': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]</msg>
<arg>${node_list}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:06:59.979619" elapsed="0.000388"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:59.980571" level="INFO">${node_id} = ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_id}</var>
<arg>${node}</arg>
<arg>node-id</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.980391" elapsed="0.000206"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:06:59.982992" level="INFO">${node_uuid} = 9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_uuid}</var>
<arg>${node_id}</arg>
<arg>ovsdb://uuid/</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:06:59.980746" elapsed="0.002275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:59.983783" level="FAIL">Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:06:59.983590" elapsed="0.000300">Dictionary does not contain key 'ovsdb:connection-info'.</status>
</kw>
<msg time="2026-04-28T03:06:59.984030" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:06:59.984076" level="INFO">${connection_info} = Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<var>${status}</var>
<var>${connection_info}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:59.983194" elapsed="0.000905"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:06:59.984798" level="FAIL">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:06:59.984609" elapsed="0.000540">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</status>
</kw>
<msg time="2026-04-28T03:06:59.985497" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:06:59.985544" level="INFO">${remote_ip} = ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<var>${status}</var>
<var>${remote_ip}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:06:59.984262" elapsed="0.001306"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:06:59.986165" level="FAIL">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<var>${uuid}</var>
<arg>'${remote_ip}' == '${ovs_system_ip}'</arg>
<arg>${node_uuid}</arg>
<arg>${uuid}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="FAIL" start="2026-04-28T03:06:59.985760" elapsed="0.000501">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<var name="${node}">{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network...</var>
<status status="FAIL" start="2026-04-28T03:06:59.980258" elapsed="0.006086">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</iter>
<var>${node}</var>
<value>@{node_list}</value>
<status status="FAIL" start="2026-04-28T03:06:59.980065" elapsed="0.006355">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</for>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.986479" elapsed="0.000017"/>
</return>
<var>${ovs_1_ovsdb_uuid}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="FAIL" start="2026-04-28T03:06:59.954432" elapsed="0.032149">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<var>${ovs_2_ovsdb_uuid}</var>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.992336" elapsed="0.000028"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_UUID</arg>
<arg>${ovs_1_ovsdb_uuid}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.992554" elapsed="0.000023"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_UUID</arg>
<arg>${ovs_2_ovsdb_uuid}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.992743" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_BRIDGE_NAME</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.992925" elapsed="0.000035"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_BRIDGE_NAME</arg>
<arg>${bridge}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.993123" elapsed="0.000021"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_IP</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.993302" elapsed="0.000019"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_IP</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.993490" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_1_PORT_NAME</arg>
<arg>${ovs_1_port_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.993673" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${body}</var>
<arg>${body}</arg>
<arg>OVS_2_PORT_NAME</arg>
<arg>${ovs_2_port_name}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.993853" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RFC8040_TOPO_API}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.994033" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.994193" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.994346" elapsed="0.000020"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.994519" elapsed="0.000022"/>
</kw>
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-04-28T03:06:59.994805" elapsed="0.000024"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.994981" elapsed="0.000022"/>
</kw>
<return>
<value>${body}</value>
<status status="NOT RUN" start="2026-04-28T03:06:59.995045" elapsed="0.000015"/>
</return>
<var>${body}</var>
<arg>vtep1</arg>
<arg>vtep2</arg>
<arg>${bridge}</arg>
<doc>Updates two port names for the given ovsbug_br_7414 in config store</doc>
<status status="FAIL" start="2026-04-28T03:06:59.947765" elapsed="0.047379">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>Verify TEP Creation on OVS</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.995356" elapsed="0.000021"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>Verify TEP Creation on OVS</arg>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:06:59.995546" elapsed="0.000022"/>
</kw>
<kw name="Run Keywords" owner="BuiltIn" type="TEARDOWN">
<kw name="Test Teardown">
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:00.003349" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:00.003484" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:00.003583" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:06:59.997022" elapsed="0.006592"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:00.010645" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:00.009806" elapsed="0.000879"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:00.007131" elapsed="0.003622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:00.011021" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:00.010793" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:00.007102" elapsed="0.004029"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:00.011676" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:00.011323" elapsed="0.000434"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:00.011823" elapsed="0.000044"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:00.003882" elapsed="0.008159"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:00.020085" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:00.020451" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:00.020796" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:00.012244" elapsed="0.008589"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:00.028078" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:00.026856" elapsed="0.001269"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:00.024231" elapsed="0.003955"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:00.028431" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:00.028226" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:00.024205" elapsed="0.004333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:00.029118" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:00.028729" elapsed="0.000518"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:00.029314" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:00.021360" elapsed="0.008145"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:06:59.996721" elapsed="0.032856"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:00.033806" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:00.033511" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:00.033491" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:00.034210" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:00.034316" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:00.034053" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:00.034870" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:00.034489" elapsed="0.000428"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:00.035478" level="INFO">${conn_id} = 227</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:00.035085" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:00.038362" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:00.038445" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:00.037996" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:00.038627" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:00.040613" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:00.328265" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:00.039584" elapsed="0.289029"/>
</kw>
<msg time="2026-04-28T03:07:00.329004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:00.039215" elapsed="0.289916"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:00.035714" elapsed="0.293570"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:00.329866" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:01.577356" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:01.577756" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:01.577862" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:00.329568" elapsed="1.248351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:01.578419" elapsed="0.000595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:01.580175" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsbug_br_7414
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:01.579416" elapsed="0.000920"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:01.580713" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:01.580516" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:01.580480" elapsed="0.000333"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:01.581060" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-28T03:07:01.580887" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:01.580865" elapsed="0.000320"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:01.581236" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:01.585829" elapsed="0.000398"/>
</kw>
<msg time="2026-04-28T03:07:01.586470" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.585059" elapsed="0.001511"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:01.586791" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:01.587038" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:01.581693" elapsed="0.005465"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:00.032922" elapsed="1.554366"/>
</kw>
<msg time="2026-04-28T03:07:01.587363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:00.032245" elapsed="1.555203"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:00.031445" elapsed="1.556125"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:01.590694" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:01.590328" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:01.590301" elapsed="0.000504"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.591226" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:01.591370" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:01.591033" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:01.592204" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:01.591644" elapsed="0.000626"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.593102" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:01.592477" elapsed="0.000651"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:01.594120" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:01.594199" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:01.593760" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.594376" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.596423" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:01.883896" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:01.595315" elapsed="0.288837"/>
</kw>
<msg time="2026-04-28T03:07:01.884453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.594959" elapsed="0.289601"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:01.593342" elapsed="0.291348"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.885188" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:01.917592" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:01.917996" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:01.918107" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:01.884918" elapsed="0.033241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:01.918706" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:01.920704" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:01.920047" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:01.921309" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:01.921014" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:01.920930" elapsed="0.000538"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:01.921820" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:07:01.921585" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:01.921551" elapsed="0.000507"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:01.922134" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:01.929331" elapsed="0.000207"/>
</kw>
<msg time="2026-04-28T03:07:01.929693" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.928660" elapsed="0.001106"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:01.929923" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:01.930098" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:01.922826" elapsed="0.007357"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:01.589500" elapsed="0.340775"/>
</kw>
<msg time="2026-04-28T03:07:01.930328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.588674" elapsed="0.341715"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:01.587863" elapsed="0.342608"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:00.030862" elapsed="1.899669"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:01.933005" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:01.932715" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:01.932694" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.933362" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:01.933464" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:01.933227" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:01.934385" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:01.933673" elapsed="0.000760"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.934998" level="INFO">${conn_id} = 229</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:01.934593" elapsed="0.000431"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:01.936019" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:01.936096" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:01.935695" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.936271" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:01.937776" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:02.221461" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:01.937117" elapsed="0.284967"/>
</kw>
<msg time="2026-04-28T03:07:02.222256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.936751" elapsed="0.285681"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:01.935235" elapsed="0.287438"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.223672" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:02.246159" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:02.246406" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:02.246502" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:02.223152" elapsed="0.023399"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:02.246912" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:02.248534" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:02.247878" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:02.249138" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:02.248817" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:02.248765" elapsed="0.000531"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:02.249645" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:07:02.249412" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:02.249378" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:02.249902" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:02.256836" elapsed="0.000349"/>
</kw>
<msg time="2026-04-28T03:07:02.257247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.255988" elapsed="0.001348"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:02.257550" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:02.257765" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:02.250614" elapsed="0.007265"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:01.931982" elapsed="0.326067"/>
</kw>
<msg time="2026-04-28T03:07:02.258125" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:01.931366" elapsed="0.326844"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:01.930719" elapsed="0.327602"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:02.261712" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:02.261345" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:02.261319" elapsed="0.000504"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.262247" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:02.262390" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:02.262065" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:02.263191" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:02.262630" elapsed="0.000626"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.264032" level="INFO">${conn_id} = 230</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:02.263481" elapsed="0.000588"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:02.265423" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:02.265531" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:02.265035" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.265777" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.267923" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:02.572675" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:02.266989" elapsed="0.305826"/>
</kw>
<msg time="2026-04-28T03:07:02.572896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.266474" elapsed="0.306535"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:02.264364" elapsed="0.308778"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.573628" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:02.738056" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:02.738321" level="INFO">${stdout} =  * Exiting ovs-vswitchd (8645)
 * Exiting ovsdb-server (8628)</msg>
<msg time="2026-04-28T03:07:02.738420" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:02.573380" elapsed="0.165091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:02.738840" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:02.740497" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:02.739844" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:02.741098" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:02.740767" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:02.740715" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:02.741617" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:07:02.741381" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:02.741345" elapsed="0.000456"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:02.741874" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:02.748984" elapsed="0.000244"/>
</kw>
<msg time="2026-04-28T03:07:02.749273" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.748295" elapsed="0.001043"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:02.749492" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:02.749649" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:02.742585" elapsed="0.007147"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:02.260253" elapsed="0.489571"/>
</kw>
<msg time="2026-04-28T03:07:02.749879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.259373" elapsed="0.490591"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:02.258589" elapsed="0.491458"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:02.752176" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:02.751896" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:02.751878" elapsed="0.000376"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.752527" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:02.752712" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:02.752395" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:02.753281" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:02.752883" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.753850" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:02.753474" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:02.754799" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:02.754875" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:02.754514" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.755078" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:02.756665" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:03.032730" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:02.755960" elapsed="0.276881"/>
</kw>
<msg time="2026-04-28T03:07:03.032916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.755591" elapsed="0.277426"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:02.754099" elapsed="0.279032"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.033566" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:03.046018" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:03.046271" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:03.046369" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:03.033341" elapsed="0.013079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:03.046783" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:03.048397" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:03.047745" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:03.048982" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:03.048666" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:03.048617" elapsed="0.000525"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:03.049498" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-28T03:07:03.049260" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:03.049226" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:03.049764" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:03.056283" elapsed="0.000237"/>
</kw>
<msg time="2026-04-28T03:07:03.056564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.055788" elapsed="0.000843"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:03.056784" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:03.056961" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:03.050468" elapsed="0.006577"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:02.751337" elapsed="0.305800"/>
</kw>
<msg time="2026-04-28T03:07:03.057190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:02.750757" elapsed="0.306491"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:02.750239" elapsed="0.307151"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:03.059604" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:03.059334" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:03.059315" elapsed="0.000368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.059975" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:03.060080" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:03.059823" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:03.060634" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:03.060252" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.061223" level="INFO">${conn_id} = 232</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:03.060829" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:03.062167" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:03.062243" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:03.061862" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.062414" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.063951" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:03.374391" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:03.063264" elapsed="0.311309"/>
</kw>
<msg time="2026-04-28T03:07:03.374665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.062887" elapsed="0.311886"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:03.061455" elapsed="0.313453"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.375478" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:03.488841" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:03.489257" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:03.489365" level="INFO">${stderr} = 2026-04-28T03:07:03Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:03Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:03Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:03.375204" elapsed="0.114219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:03.489876" elapsed="0.000615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:03.491636" level="INFO">2026-04-28T03:07:03Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:03Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:03Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:03.490901" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:03.492230" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:03.491909" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:03.491861" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:03.492739" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:07:03.492504" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:03.492470" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:03.493039" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:03.498844" elapsed="0.000462"/>
</kw>
<msg time="2026-04-28T03:07:03.499382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.498086" elapsed="0.001424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:03.499747" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:03.500043" elapsed="0.000033"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:03.493770" elapsed="0.006415"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:03.058690" elapsed="0.441653"/>
</kw>
<msg time="2026-04-28T03:07:03.500428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.058132" elapsed="0.442386"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:03.057592" elapsed="0.443067"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:00.030292" elapsed="3.470459"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:03.505202" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:03.504770" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:03.504740" elapsed="0.000578"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.505709" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:03.505857" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:03.505516" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:03.506655" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:03.506117" elapsed="0.000603"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.507524" level="INFO">${conn_id} = 233</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:03.506925" elapsed="0.000630"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:03.508556" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:03.508635" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:03.508198" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.508810" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.511178" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:03.800153" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:03.510061" elapsed="0.290333"/>
</kw>
<msg time="2026-04-28T03:07:03.800699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.509408" elapsed="0.291400"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:03.507765" elapsed="0.293196"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:03.801477" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:04.988354" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:04.988842" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:04.988986" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:03.801212" elapsed="1.187836"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:04.989485" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:04.991131" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br ovsbug_br_7414
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:04.990417" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:04.991737" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:04.991431" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:04.991381" elapsed="0.000515"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:04.992286" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:07:04.992048" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:04.992012" elapsed="0.000467"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:04.992554" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:04.998130" elapsed="0.000276"/>
</kw>
<msg time="2026-04-28T03:07:04.998614" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:04.997383" elapsed="0.001328"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:04.998979" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:04.999201" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:04.993264" elapsed="0.006052"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:03.503987" elapsed="1.495456"/>
</kw>
<msg time="2026-04-28T03:07:04.999517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:03.503126" elapsed="1.496475"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:03.502358" elapsed="1.497351"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.003152" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:05.002763" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.002719" elapsed="0.000546"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.003653" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:05.003825" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:05.003459" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.004629" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:05.004098" elapsed="0.000597"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.005462" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:05.004902" elapsed="0.000595"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.007214" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:05.007325" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:05.006716" elapsed="0.000643"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.007571" elapsed="0.000571"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.009631" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:05.302244" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:05.008674" elapsed="0.293812"/>
</kw>
<msg time="2026-04-28T03:07:05.302845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.008325" elapsed="0.294926"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:05.005845" elapsed="0.297535"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.303841" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:05.336302" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:05.336546" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:05.336639" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:05.303598" elapsed="0.033090"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:05.337096" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.338611" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:05.338000" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:05.339234" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:05.338921" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.338873" elapsed="0.000517"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:05.339733" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:07:05.339504" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.339471" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:05.340019" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:05.346309" elapsed="0.000292"/>
</kw>
<msg time="2026-04-28T03:07:05.346838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.345320" elapsed="0.001636"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.347196" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.347413" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:05.340676" elapsed="0.006851"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:05.001714" elapsed="0.345941"/>
</kw>
<msg time="2026-04-28T03:07:05.347738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.000923" elapsed="0.347182"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:05.000175" elapsed="0.348065"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:03.501769" elapsed="1.846556"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.351445" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:05.351068" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.351040" elapsed="0.000606"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.352074" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:05.352218" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:05.351859" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.353411" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:05.352458" elapsed="0.001020"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.354228" level="INFO">${conn_id} = 235</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:05.353690" elapsed="0.001317"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.356255" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:05.356332" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:05.355975" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.356506" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.358014" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:05.627264" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:05.357343" elapsed="0.270145"/>
</kw>
<msg time="2026-04-28T03:07:05.627640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.356997" elapsed="0.270768"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:05.355380" elapsed="0.272513"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.628385" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:05.650592" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:05.650829" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:05.650891" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:05.628145" elapsed="0.022776"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:05.651226" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.652056" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:05.651715" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:05.652359" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:05.652202" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.652174" elapsed="0.000261"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:05.652595" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-28T03:07:05.652489" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.652473" elapsed="0.000211"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:05.652719" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:05.656826" elapsed="0.000402"/>
</kw>
<msg time="2026-04-28T03:07:05.657312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.656121" elapsed="0.001315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.657747" elapsed="0.000043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.658102" elapsed="0.000044"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:05.653081" elapsed="0.005191"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:05.350212" elapsed="0.308241"/>
</kw>
<msg time="2026-04-28T03:07:05.658712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.349386" elapsed="0.309453"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:05.348606" elapsed="0.310424"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:05.662085" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:05.661726" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:05.661703" elapsed="0.000503"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.662629" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:05.662745" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:05.662423" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.663355" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:05.662925" elapsed="0.000479"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.663967" level="INFO">${conn_id} = 236</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:05.663556" elapsed="0.000439"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:05.664911" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:05.665007" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:05.664631" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.665199" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.666755" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:05.980391" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:05.666059" elapsed="0.314556"/>
</kw>
<msg time="2026-04-28T03:07:05.980740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.665687" elapsed="0.315190"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:05.664215" elapsed="0.316874"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:05.981813" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:06.156036" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:06.156450" level="INFO">${stdout} =  * Exiting ovs-vswitchd (4003)
 * Exiting ovsdb-server (3981)</msg>
<msg time="2026-04-28T03:07:06.156549" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:05.981439" elapsed="0.175162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:06.157127" elapsed="0.000645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.158981" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.158234" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.159585" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.159270" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.159210" elapsed="0.000538"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:06.160206" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-28T03:07:06.159864" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.159832" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.160500" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:06.167459" elapsed="0.000269"/>
</kw>
<msg time="2026-04-28T03:07:06.167774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.166929" elapsed="0.001034"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.168123" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.168282" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:06.161309" elapsed="0.007056"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:05.660852" elapsed="0.507605"/>
</kw>
<msg time="2026-04-28T03:07:06.168513" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:05.660204" elapsed="0.508370"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:05.659444" elapsed="0.509222"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.171296" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:06.171020" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.171000" elapsed="0.000377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.171665" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:06.171769" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:06.171522" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.172339" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.171954" elapsed="0.000431"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.172925" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:06.172533" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.173877" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:06.173969" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:06.173584" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.174142" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.175763" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:06.443771" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:06.175035" elapsed="0.268956"/>
</kw>
<msg time="2026-04-28T03:07:06.444108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.174647" elapsed="0.269599"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:06.173174" elapsed="0.271257"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.445208" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:06.460847" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:06.461197" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:06.461302" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:06.444778" elapsed="0.016577"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:06.461795" elapsed="0.000604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.463256" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.462782" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.463775" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.463544" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.463502" elapsed="0.000383"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:06.464155" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-28T03:07:06.463990" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.463965" elapsed="0.000326"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.464339" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:06.470169" elapsed="0.000401"/>
</kw>
<msg time="2026-04-28T03:07:06.470658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.469391" elapsed="0.001367"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.471051" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.471347" elapsed="0.000042"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:06.464808" elapsed="0.006695"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:06.170378" elapsed="0.301302"/>
</kw>
<msg time="2026-04-28T03:07:06.471778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.169437" elapsed="0.302446"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:06.168884" elapsed="0.303144"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.475740" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:06.475247" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.475212" elapsed="0.000675"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.476464" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:06.476661" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:06.476202" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.477651" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.477015" elapsed="0.000721"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.478813" level="INFO">${conn_id} = 238</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:06.478040" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.480050" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:06.480131" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:06.479677" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.480329" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.482298" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:06.794424" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:06.481453" elapsed="0.313194"/>
</kw>
<msg time="2026-04-28T03:07:06.794769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.480983" elapsed="0.314004"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:06.479149" elapsed="0.315973"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.795601" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:06.899312" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:06.899746" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:06.899864" level="INFO">${stderr} = 2026-04-28T03:07:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:06Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:06.795357" elapsed="0.104565"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:06.900466" elapsed="0.000647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.902280" level="INFO">2026-04-28T03:07:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.901540" elapsed="0.000850"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.902888" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.902567" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.902516" elapsed="0.000571"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:06.903455" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:07:06.903208" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.903172" elapsed="0.000485"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.903744" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:06.910846" elapsed="0.000311"/>
</kw>
<msg time="2026-04-28T03:07:06.911203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.909794" elapsed="0.001477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.911428" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.911582" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:06.904494" elapsed="0.007171"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:06.474354" elapsed="0.437402"/>
</kw>
<msg time="2026-04-28T03:07:06.911811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:06.473251" elapsed="0.438619"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:06.472308" elapsed="0.439660"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:03.501132" elapsed="3.410896"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:00.029752" elapsed="6.882330"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.913237" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:06.912777" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:07:06.913482" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.913339" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.913321" elapsed="0.000223"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:07:06.913701" elapsed="0.000213"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.914847" level="FAIL">'['7414', 'southbound']' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:06.914464" elapsed="0.000454">'['7414', 'southbound']' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:07:06.915052" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:07:06.914092" elapsed="0.000984"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.915647" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:06.915308" elapsed="0.000365"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.916140" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:06.915827" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.916608" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:06.916315" elapsed="0.000318"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.917188" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']

Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:07:06.916782" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.917623" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.917386" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.918390" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:07:06.917977" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:06.917733" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.917715" elapsed="0.000784"/>
</if>
<arg>${TEST_TAGS}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:07:06.912395" elapsed="0.006149"/>
</kw>
<status status="PASS" start="2026-04-28T03:06:59.996357" elapsed="6.922241"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:06.922326" level="FAIL">Variable '${body}' not found.</msg>
<arg>session</arg>
<arg>url=${RFC8040_TOPO_API}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-28T03:07:06.918748" elapsed="0.003612">Variable '${body}' not found.</status>
</kw>
<arg>Test Teardown</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_TOPO_API}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="FAIL" start="2026-04-28T03:06:59.995833" elapsed="6.926627">Variable '${body}' not found.</status>
</kw>
<doc>This test case is supplemental to the other test case for bug 7414. Even when the other
test case would fail and no ovs would receive a port create because the port names are the same, this
case should still be able to create ports on the ovs since the port names are different. However,
another symptom of this bug is that multiple creations in the same request would end up creating
all the ports on all of the ovs, which is incorrect. Both test cases check for this, but in the
case where the other test case were to fail this would also help understand if this symptom is still
happening</doc>
<tag>7414</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:06:56.142168" elapsed="10.780379">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)

Also teardown failed:
Variable '${body}' not found.</status>
</test>
<test id="s1-s6-t3" name="Bug 5221" line="109">
<kw name="Test Setup" type="SETUP">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:07:06.925981" elapsed="0.000221"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:07:06.925704" elapsed="0.000554"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.927244" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.927133" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.927114" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.932114" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.932003" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.931983" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.933196" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:06.932791" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.933681" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:07:06.933379" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:07:06.933762" elapsed="0.000032"/>
</return>
<msg time="2026-04-28T03:07:06.933924" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:07:06.932405" elapsed="0.001560"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.939874" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.939760" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.939742" elapsed="0.000232"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:06.941685" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:06.941532" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.941513" elapsed="0.000323"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:06.942506" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:06.941995" elapsed="0.000539"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.943007" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:06.942730" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.977692" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:07:06.944448" elapsed="0.033434"/>
</kw>
<msg time="2026-04-28T03:07:06.978082" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:07:06.978129" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:06.943230" elapsed="0.034935"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:07:06.996697" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "2 "2 "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:07:06.979659" elapsed="0.017198"/>
</kw>
<msg time="2026-04-28T03:07:06.997040" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:07:06.997085" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "2 "2 "1 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:06.978424" elapsed="0.018699"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.997597" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:06.997271" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.997243" elapsed="0.000548"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:06.998548" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "2 "2 "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:06.997932" elapsed="0.000720"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:06.999026" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:06.998735" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:06.998717" elapsed="0.000499"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:07:06.999252" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:07.001754" elapsed="0.000164"/>
</kw>
<msg time="2026-04-28T03:07:07.001989" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.001281" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.002293" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.002502" elapsed="0.000023"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:07.000411" elapsed="0.002243"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:07:06.999563" elapsed="0.003182"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:07:06.941161" elapsed="0.061682"/>
</kw>
<msg time="2026-04-28T03:07:07.002960" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:07.003007" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "2 "2 "1 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:06.940125" elapsed="0.062924"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:07:07.003308" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:07:07.003198" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.003179" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.003813" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.004256" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.004330" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:07:06.939410" elapsed="0.065031"/>
</kw>
<msg time="2026-04-28T03:07:07.004536" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:07.004581" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "2 "2 "1 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:06.934430" elapsed="0.070190"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.004961" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:07.004696" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.004679" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:07:06.934290" elapsed="0.070774"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:07:06.934067" elapsed="0.071030"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:07:06.931606" elapsed="0.073550"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:07:06.926826" elapsed="0.078400"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:06.926403" elapsed="0.078871"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:07:06.923713" elapsed="0.081620"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:06.923400" elapsed="0.081983"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.005815" level="INFO">${bridge} = ovsbug_br_5221</msg>
<var>${bridge}</var>
<arg>ovsbug_br_5221</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:07.005538" elapsed="0.000304"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.008326" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:07.008054" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.008033" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.008684" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:07.008785" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:07.008547" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.009352" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.008971" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.009966" level="INFO">${conn_id} = 239</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:07.009547" elapsed="0.000447"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.010992" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:07.011070" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:07.010687" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.011248" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.012444" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:07.290757" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:07.012124" elapsed="0.278857"/>
</kw>
<msg time="2026-04-28T03:07:07.291099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.011746" elapsed="0.279466"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:07.010261" elapsed="0.281144"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.292090" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:07:07.355088" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:07.355359" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:07.355458" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:07.291722" elapsed="0.063789"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:07.355893" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.357542" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.356869" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.358197" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:07.357839" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.357786" elapsed="0.000571"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:07.358713" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:07:07.358475" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.358442" elapsed="0.000463"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.359014" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:07.366527" elapsed="0.000314"/>
</kw>
<msg time="2026-04-28T03:07:07.366891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.365388" elapsed="0.001601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.367185" elapsed="0.000028"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.367395" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:07.359706" elapsed="0.007803"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:07.007182" elapsed="0.360449"/>
</kw>
<msg time="2026-04-28T03:07:07.367704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.006603" elapsed="0.361163"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:${OVSDB_NODE_PORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:07.006052" elapsed="0.361830"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:07:07.368971" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:07:07.369407" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:07:07.368741" elapsed="0.000706"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:07.370042" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:07.369648" elapsed="0.000454"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:07.370617" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:07.370321" elapsed="0.000325"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.371305" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:07.370895" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.371757" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.371488" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.372249" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.371990" elapsed="0.000306"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:07.383031" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:07:07.383093" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:07.383215" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:07.372446" elapsed="0.010796"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.393285" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:07.388697" elapsed="0.004740"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.396471" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:07.393826" elapsed="0.002679"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:07.393499" elapsed="0.003047"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.388647" elapsed="0.007922"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.396997" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.396711" elapsed="0.000330"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:07.397087" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:07.383576" elapsed="0.013658"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:07.397378" elapsed="0.002358"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:07:07.368240" elapsed="0.031561"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.411370" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:07.411080" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.411059" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.411749" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:07.411857" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:07.411601" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.412417" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.412041" elapsed="0.000422"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.413010" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:07.412610" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.413892" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:07.413983" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:07.413627" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.414181" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.415417" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:07.676584" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:07.415101" elapsed="0.261642"/>
</kw>
<msg time="2026-04-28T03:07:07.676827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.414729" elapsed="0.262187"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:07.413243" elapsed="0.263832"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:07.677613" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:07.700074" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:07.700341" level="INFO">${stdout} = 0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:07.700447" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:07.677334" elapsed="0.023167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:07.700882" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.702584" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.701853" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.703216" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:07.702872" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.702817" elapsed="0.000570"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:07.703756" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:07:07.703511" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:07.703476" elapsed="0.000508"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.704068" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:07.709720" elapsed="0.000201"/>
</kw>
<msg time="2026-04-28T03:07:07.710022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.709065" elapsed="0.001043"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.710316" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.710528" elapsed="0.000027"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:07.704791" elapsed="0.005848"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:07.410534" elapsed="0.300228"/>
</kw>
<msg time="2026-04-28T03:07:07.710833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:07.409955" elapsed="0.300940"/>
</kw>
<msg time="2026-04-28T03:07:07.711067" level="INFO">${output} = 0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:07.409422" elapsed="0.301679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.711643" level="INFO">0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:07.711304" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:07.712624" level="FAIL">'0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:07.712110" elapsed="0.000612">'0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:07:07.711796" elapsed="0.001023">'0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:07:07.711771" elapsed="0.001093">'0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:07.713278" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:07.713080" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:07:07.713054" elapsed="0.000346"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.713446" elapsed="0.000020"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:07:07.408958" elapsed="0.304653">'0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:07.713698" elapsed="0.000020"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:07:07.400523" elapsed="0.313305">'0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:08.730173" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:08.729851" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:08.729827" elapsed="0.000445"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:08.730587" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:08.730706" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:08.730418" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:08.731307" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:08.730902" elapsed="0.000452"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:08.731922" level="INFO">${conn_id} = 241</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:08.731502" elapsed="0.000462"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:08.732858" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:08.732949" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:08.732559" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:08.733124" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:08.734594" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:09.005208" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:08.734275" elapsed="0.271125"/>
</kw>
<msg time="2026-04-28T03:07:09.005511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:08.733604" elapsed="0.272039"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:08.732178" elapsed="0.273646"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:09.006518" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:09.030454" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:09.030825" level="INFO">${stdout} = 0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:09.030922" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:09.006170" elapsed="0.024851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:09.031467" elapsed="0.000586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:09.033089" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:09.032442" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:09.033734" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:09.033351" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:09.033303" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:09.034535" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:07:09.034270" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:09.034227" elapsed="0.000519"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:09.034823" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:09.039574" elapsed="0.000144"/>
</kw>
<msg time="2026-04-28T03:07:09.039761" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:09.039099" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:09.040246" elapsed="0.000027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:09.040426" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:09.035539" elapsed="0.004970"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:08.729291" elapsed="0.311310"/>
</kw>
<msg time="2026-04-28T03:07:09.040656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:08.728626" elapsed="0.312077"/>
</kw>
<msg time="2026-04-28T03:07:09.040814" level="INFO">${output} = 0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:08.728042" elapsed="0.312797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:09.041256" level="INFO">0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:09.041002" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:09.041712" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:09.041366" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:09.041349" elapsed="0.000892"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:09.042506" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:09.042295" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:09.042280" elapsed="0.000306"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:09.042617" elapsed="0.000027"/>
</return>
<msg time="2026-04-28T03:07:09.042767" level="INFO">${output} = 0f9946a0-1c3e-4ac4-92d0-9cff34526f97
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:07:08.727563" elapsed="0.315230"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:09.042844" elapsed="0.000025"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:07:08.714662" elapsed="0.328318"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:07:07.399991" elapsed="1.643038"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:07:09.043524" level="INFO">@{list} = [ ovsdb://10.30.170.161:6634 ]</msg>
<var>@{list}</var>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:07:09.043182" elapsed="0.000368"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:09.058124" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:09.058440" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:09.058679" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:09.051538" elapsed="0.007179"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:09.066572" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:09.065822" elapsed="0.000779"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:09.062725" elapsed="0.003916"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:09.066811" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:09.066667" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:09.062699" elapsed="0.004189"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:09.067289" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:09.067039" elapsed="0.000329"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:09.067411" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:09.059333" elapsed="0.008204"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:09.058834" elapsed="0.008733"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:09.067729" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:09.067591" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:09.058807" elapsed="0.008993"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:07:09.067953" elapsed="0.000171"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:09.070912" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:09.068477" elapsed="0.002582">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:07:09.068320" elapsed="0.002830">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:07:09.068183" elapsed="0.003041">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:07:09.051087" elapsed="0.020254">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:11.092631" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:11.092847" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:11.093015" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:11.084264" elapsed="0.008783"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:11.099268" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:11.098210" elapsed="0.001099"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:11.095985" elapsed="0.003381"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:11.099604" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:11.099403" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:11.095966" elapsed="0.003745"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:11.100269" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:11.099898" elapsed="0.000549"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:11.100511" elapsed="0.000048"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:11.093497" elapsed="0.007202"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:11.093146" elapsed="0.007596"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:11.101013" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:11.100777" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:11.093122" elapsed="0.007996"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:07:11.101306" elapsed="0.000232"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:11.105396" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:11.102036" elapsed="0.003497">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:07:11.101798" elapsed="0.003855">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:07:11.101616" elapsed="0.004177">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:07:11.083517" elapsed="0.022628">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:13.127592" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:13.127809" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:13.128007" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:13.119387" elapsed="0.008648"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:13.133812" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:13.132783" elapsed="0.001071"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:13.130816" elapsed="0.003096"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:13.134177" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:13.133971" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:13.130794" elapsed="0.003494"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:13.134841" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:13.134484" elapsed="0.000490"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:13.135039" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:13.128538" elapsed="0.006687"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:13.128137" elapsed="0.007130"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:13.135494" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:13.135300" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:13.128113" elapsed="0.007480"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:07:13.135778" elapsed="0.000257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:13.140214" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:13.136531" elapsed="0.003869">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:07:13.136315" elapsed="0.004216">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:07:13.136117" elapsed="0.004521">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:07:13.118640" elapsed="0.022158">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:15.166786" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:15.167026" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:15.167259" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:15.154065" elapsed="0.013259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:15.177716" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:15.176947" elapsed="0.000798"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:15.173425" elapsed="0.004361"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:15.177971" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:15.177813" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:15.173386" elapsed="0.004662"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:15.178438" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:15.178188" elapsed="0.000394"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:15.178629" elapsed="0.000038"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:15.168381" elapsed="0.010388"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:15.167549" elapsed="0.011250"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:15.178982" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:15.178823" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:15.167501" elapsed="0.011554"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:07:15.179190" elapsed="0.000167"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:15.182130" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:15.179737" elapsed="0.002487">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:07:15.179573" elapsed="0.002739">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:07:15.179434" elapsed="0.002980">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:07:15.153298" elapsed="0.029237">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:17.201063" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:17.201282" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:17.201457" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:17.193104" elapsed="0.008380"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.209490" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:17.208414" elapsed="0.001119"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:17.205981" elapsed="0.003610"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.209830" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:17.209629" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:17.205961" elapsed="0.004009"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.210682" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:17.210161" elapsed="0.000637"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:17.210863" elapsed="0.000049"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:17.201968" elapsed="0.009105"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:17.201598" elapsed="0.009519"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.211346" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:17.211151" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:17.201574" elapsed="0.009875"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="PASS" start="2026-04-28T03:07:17.211632" elapsed="0.000237"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.215573" level="FAIL">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:17.212368" elapsed="0.003632">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<var name="${i}">ovsdb://10.30.170.161:6634</var>
<status status="FAIL" start="2026-04-28T03:07:17.212152" elapsed="0.003941">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="FAIL" start="2026-04-28T03:07:17.211967" elapsed="0.004204">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-04-28T03:07:17.192352" elapsed="0.023934">'{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<msg time="2026-04-28T03:07:17.216422" level="FAIL">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:07:09.043709" elapsed="8.172832">Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<arg>${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${bridge}</arg>
<arg>0000000000005221</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.216847" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>@{list}</var>
<arg>ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}/bridge/${bridge}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.217049" elapsed="0.000022"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.217223" elapsed="0.000020"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.217436" elapsed="0.000023"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements Not At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.217606" elapsed="0.000021"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.217815" elapsed="0.000023"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.218015" elapsed="0.000022"/>
</kw>
<kw name="Run Keywords" owner="BuiltIn" type="TEARDOWN">
<kw name="Test Teardown">
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:17.225276" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:17.225486" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:17.225622" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:17.219515" elapsed="0.006142"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.232864" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:17.232036" elapsed="0.000868"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:17.229356" elapsed="0.003627"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.233221" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:17.233019" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:17.229328" elapsed="0.004000"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.233859" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:17.233513" elapsed="0.000442"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:17.234018" elapsed="0.000042"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:17.226054" elapsed="0.008139"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:17.240417" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:17.240670" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:17.240832" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:17.234391" elapsed="0.006476"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.248187" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:17.247142" elapsed="0.001086"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:17.244494" elapsed="0.003792"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.248522" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:17.248322" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:17.244468" elapsed="0.004162"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.249189" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:17.248818" elapsed="0.000491"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:17.249370" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:17.241308" elapsed="0.008237"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:17.219234" elapsed="0.030382"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:17.254154" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:17.253699" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:17.253674" elapsed="0.000594"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:17.254700" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:17.254852" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:17.254470" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.255499" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:17.255116" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:17.256095" level="INFO">${conn_id} = 242</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:17.255696" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:17.257277" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:17.257355" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:17.256915" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:17.257531" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:17.259470" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:17.579803" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:17.258460" elapsed="0.321604"/>
</kw>
<msg time="2026-04-28T03:07:17.580400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:17.258105" elapsed="0.322395"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:17.256333" elapsed="0.324299"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:17.581128" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:18.738876" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:18.739263" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:18.739365" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:17.580866" elapsed="1.158554"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:18.739861" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:18.741517" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:18.740853" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:18.742234" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:18.741849" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:18.741783" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:18.742803" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:07:18.742546" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:18.742497" elapsed="0.000543"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:18.743117" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:18.751002" elapsed="0.000331"/>
</kw>
<msg time="2026-04-28T03:07:18.751502" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:18.749566" elapsed="0.002079"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:18.751802" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:18.751981" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:18.743845" elapsed="0.008220"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:17.252908" elapsed="1.499245"/>
</kw>
<msg time="2026-04-28T03:07:18.752204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:17.252138" elapsed="1.500138"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:17.251413" elapsed="1.500962"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:18.754728" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:18.754449" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:18.754429" elapsed="0.000379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:18.755146" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:18.755249" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:18.754987" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:18.756203" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:18.755545" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:18.756826" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:18.756416" elapsed="0.000436"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:18.757865" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:18.757957" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:18.757530" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:18.758177" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:18.760265" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:19.052098" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:18.759146" elapsed="0.293128"/>
</kw>
<msg time="2026-04-28T03:07:19.052549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:18.758748" elapsed="0.293880"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:18.757088" elapsed="0.295645"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.053124" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:19.085861" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:19.086161" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:19.086259" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:19.052913" elapsed="0.033397"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:19.086664" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.088587" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:19.087996" elapsed="0.000686"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:19.089158" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:19.088846" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.088798" elapsed="0.000519"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:19.089711" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-28T03:07:19.089432" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.089398" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:19.090092" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:19.097610" elapsed="0.000574"/>
</kw>
<msg time="2026-04-28T03:07:19.098355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.096457" elapsed="0.001966"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.098579" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.098734" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:19.090761" elapsed="0.008054"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:18.753792" elapsed="0.345114"/>
</kw>
<msg time="2026-04-28T03:07:19.098975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:18.753184" elapsed="0.345853"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:18.752583" elapsed="0.346531"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:17.250878" elapsed="1.848292"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.101271" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:19.101003" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.100984" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.101616" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:19.101715" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:19.101488" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.102295" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:19.101881" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.102855" level="INFO">${conn_id} = 244</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:19.102488" elapsed="0.000392"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.103791" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:19.103866" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:19.103514" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.104064" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.105530" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:19.384049" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:19.104890" elapsed="0.279404"/>
</kw>
<msg time="2026-04-28T03:07:19.384798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.104546" elapsed="0.280421"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:19.103104" elapsed="0.282052"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.385883" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:19.408918" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:19.409210" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:19.409312" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:19.385492" elapsed="0.023871"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:19.409720" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.411349" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:19.410676" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:19.411925" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:19.411625" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.411570" elapsed="0.000570"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:19.412500" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:07:19.412265" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.412230" elapsed="0.000455"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:19.412758" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:19.418984" elapsed="0.000226"/>
</kw>
<msg time="2026-04-28T03:07:19.419254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.418482" elapsed="0.000833"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.419469" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.419623" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:19.413473" elapsed="0.006229"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:19.100438" elapsed="0.319352"/>
</kw>
<msg time="2026-04-28T03:07:19.419841" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.099868" elapsed="0.320031"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:19.099353" elapsed="0.320651"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.422156" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:19.421868" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.421849" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.422529" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:19.422631" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:19.422391" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.423200" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:19.422800" elapsed="0.000447"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.423775" level="INFO">${conn_id} = 245</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:19.423395" elapsed="0.000406"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.424716" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:19.424833" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:19.424435" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.425036" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.426541" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:19.735007" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:19.425879" elapsed="0.309402"/>
</kw>
<msg time="2026-04-28T03:07:19.735448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.425521" elapsed="0.310112"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:19.424024" elapsed="0.311883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.737000" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:19.821587" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:19.822047" level="INFO">${stdout} =  * Exiting ovs-vswitchd (9572)
 * Exiting ovsdb-server (9549)</msg>
<msg time="2026-04-28T03:07:19.822168" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:19.736408" elapsed="0.085817"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:19.822706" elapsed="0.000638"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.824649" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:19.823818" elapsed="0.000936"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:19.825345" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:19.825004" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.824899" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:19.825989" elapsed="0.000102"/>
</return>
<status status="PASS" start="2026-04-28T03:07:19.825685" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.825617" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:19.826314" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:19.832500" elapsed="0.000359"/>
</kw>
<msg time="2026-04-28T03:07:19.832922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.831748" elapsed="0.001605"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.833590" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.833835" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:19.827097" elapsed="0.006877"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:19.421307" elapsed="0.412802"/>
</kw>
<msg time="2026-04-28T03:07:19.834200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.420714" elapsed="0.413580"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:19.420196" elapsed="0.414210"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:19.837590" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:19.837195" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:19.837168" elapsed="0.000555"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.838166" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:19.838430" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:19.837974" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.839287" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:19.838679" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.840137" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:19.839577" elapsed="0.000597"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:19.841525" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:19.841687" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:19.841108" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.841976" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:19.843715" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:20.114369" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:19.842928" elapsed="0.271617"/>
</kw>
<msg time="2026-04-28T03:07:20.114643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.842569" elapsed="0.272185"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:19.840496" elapsed="0.274401"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.115484" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:20.127847" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:20.128133" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:20.128229" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:20.115178" elapsed="0.013100"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:20.128631" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:20.130216" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:20.129552" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:20.130803" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:20.130506" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:20.130450" elapsed="0.000547"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:20.131358" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:07:20.131119" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:20.131084" elapsed="0.000455"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:20.131613" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:20.137020" elapsed="0.000306"/>
</kw>
<msg time="2026-04-28T03:07:20.137387" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.136347" elapsed="0.001127"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:20.137703" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:20.137919" elapsed="0.000054"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:20.132322" elapsed="0.005738"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:19.836375" elapsed="0.301811"/>
</kw>
<msg time="2026-04-28T03:07:20.138259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:19.835541" elapsed="0.302799"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:19.834682" elapsed="0.303843"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:20.141678" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:20.141284" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:20.141258" elapsed="0.000541"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.142214" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:20.142361" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:20.142018" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:20.143154" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:20.142604" elapsed="0.000615"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.144009" level="INFO">${conn_id} = 247</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:20.143453" elapsed="0.000593"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:20.145305" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:20.145409" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:20.144902" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.145679" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.147571" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:20.451379" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:20.146721" elapsed="0.304813"/>
</kw>
<msg time="2026-04-28T03:07:20.451617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.146370" elapsed="0.305344"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:20.144333" elapsed="0.307512"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.452390" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:20.555500" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:20.555883" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:20.556026" level="INFO">${stderr} = 2026-04-28T03:07:20Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:20Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:20Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:20.452114" elapsed="0.103972"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:20.556545" elapsed="0.000570"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:20.558392" level="INFO">2026-04-28T03:07:20Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:20Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:20Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:20.557713" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:20.558998" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:20.558670" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:20.558616" elapsed="0.000547"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:20.559519" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-28T03:07:20.559280" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:20.559247" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:20.559798" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:20.565271" elapsed="0.000361"/>
</kw>
<msg time="2026-04-28T03:07:20.565694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.564524" elapsed="0.001262"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:20.566025" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:20.566243" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:20.560520" elapsed="0.005839"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:20.140482" elapsed="0.426002"/>
</kw>
<msg time="2026-04-28T03:07:20.566559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.139644" elapsed="0.426997"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:20.138802" elapsed="0.427946"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:17.250307" elapsed="3.316522"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:20.570991" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:20.570606" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:20.570580" elapsed="0.000523"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.571474" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:20.571613" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:20.571295" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:20.572674" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:20.571847" elapsed="0.000894"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.573537" level="INFO">${conn_id} = 248</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:20.572972" elapsed="0.000601"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:20.574900" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:20.574998" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:20.574459" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.575173" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.577177" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:20.914088" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:20.576090" elapsed="0.338240"/>
</kw>
<msg time="2026-04-28T03:07:20.914636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.575727" elapsed="0.339014"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:20.573865" elapsed="0.341011"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:20.915407" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:22.082020" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:22.082583" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:22.082687" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:20.915137" elapsed="1.167609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:22.083255" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.085014" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:22.084304" elapsed="0.000838"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:22.085619" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:22.085323" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.085270" elapsed="0.000506"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:22.086164" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-28T03:07:22.085892" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.085859" elapsed="0.000507"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:22.086473" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:22.093755" elapsed="0.000226"/>
</kw>
<msg time="2026-04-28T03:07:22.094134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.092929" elapsed="0.001277"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.094382" elapsed="0.000027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.094553" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:22.087311" elapsed="0.007326"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:20.569816" elapsed="1.524911"/>
</kw>
<msg time="2026-04-28T03:07:22.094778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:20.569032" elapsed="1.525806"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:20.568280" elapsed="1.526634"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.097171" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:22.096824" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.096804" elapsed="0.000461"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.097555" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:22.097672" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:22.097416" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.098313" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:22.097896" elapsed="0.000479"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.098917" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:22.098526" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.099974" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:22.100053" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:22.099623" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.100225" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.102238" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:22.393503" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:22.101223" elapsed="0.292530"/>
</kw>
<msg time="2026-04-28T03:07:22.394110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.100823" elapsed="0.293392"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:22.099209" elapsed="0.295137"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.395140" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:22.438234" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:22.438553" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:22.438687" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:22.394582" elapsed="0.044175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:22.439296" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.441539" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:22.440334" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:22.441912" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:22.441714" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.441681" elapsed="0.000351"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:22.442239" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-28T03:07:22.442104" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.442084" elapsed="0.000266"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:22.442394" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:22.446758" elapsed="0.000293"/>
</kw>
<msg time="2026-04-28T03:07:22.447273" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.445863" elapsed="0.001505"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.447579" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.447790" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:22.442816" elapsed="0.005091"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:22.096217" elapsed="0.351828"/>
</kw>
<msg time="2026-04-28T03:07:22.448115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.095639" elapsed="0.352556"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:22.095107" elapsed="0.353189"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:20.567721" elapsed="1.880649"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.451157" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:22.450789" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.450758" elapsed="0.000510"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.451710" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:22.451846" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:22.451537" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.452583" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:22.452094" elapsed="0.000565"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.453365" level="INFO">${conn_id} = 250</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:22.452863" elapsed="0.000539"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.454632" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:22.454732" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:22.454268" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.454980" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.457030" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:22.769665" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:22.456073" elapsed="0.313734"/>
</kw>
<msg time="2026-04-28T03:07:22.769895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.455598" elapsed="0.314407"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:22.453685" elapsed="0.316452"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.770637" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:22.793336" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:22.793593" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:22.793688" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:22.770376" elapsed="0.023363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:22.794151" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.796102" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:22.795317" elapsed="0.000893"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:22.796907" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:22.796438" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.796366" elapsed="0.000827"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:22.797629" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:07:22.797338" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.797298" elapsed="0.000539"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:22.797917" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:22.805460" elapsed="0.000551"/>
</kw>
<msg time="2026-04-28T03:07:22.806113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.804377" elapsed="0.001915"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.806701" elapsed="0.000052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.807095" elapsed="0.000048"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:22.798728" elapsed="0.008577"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:22.450082" elapsed="0.357432"/>
</kw>
<msg time="2026-04-28T03:07:22.807726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.449325" elapsed="0.358557"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:22.448646" elapsed="0.359494"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:22.811038" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:22.810747" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:22.810727" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.811394" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:22.811498" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:22.811262" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.812065" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:22.811668" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.812651" level="INFO">${conn_id} = 251</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:22.812261" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:22.813600" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:22.813677" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:22.813321" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.813848" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:22.815372" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:23.083775" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:22.814695" elapsed="0.269307"/>
</kw>
<msg time="2026-04-28T03:07:23.084114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.814347" elapsed="0.269888"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:22.812888" elapsed="0.271547"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.085090" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:23.330603" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:23.331012" level="INFO">${stdout} =  * Exiting ovs-vswitchd (4843)
 * Exiting ovsdb-server (4820)</msg>
<msg time="2026-04-28T03:07:23.331118" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:23.084743" elapsed="0.246429"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:23.331609" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:23.333568" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:23.332870" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:23.334186" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:23.333851" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:23.333800" elapsed="0.000551"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:23.334726" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-28T03:07:23.334476" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:23.334440" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:23.335044" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:23.342539" elapsed="0.000471"/>
</kw>
<msg time="2026-04-28T03:07:23.343093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.341630" elapsed="0.001661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:23.343526" elapsed="0.000034"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:23.343780" elapsed="0.000032"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:23.335771" elapsed="0.008137"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:22.810177" elapsed="0.533897"/>
</kw>
<msg time="2026-04-28T03:07:23.344154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:22.809594" elapsed="0.534675"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:22.808623" elapsed="0.535770"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:23.347907" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:23.347466" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:23.347431" elapsed="0.000645"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.348520" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:23.348679" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:23.348311" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:23.349564" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:23.348982" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.350464" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:23.349865" elapsed="0.000637"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:23.351906" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:23.352051" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:23.351481" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.352357" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.354645" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:23.623998" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:23.353588" elapsed="0.270696"/>
</kw>
<msg time="2026-04-28T03:07:23.624415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.353130" elapsed="0.271381"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:23.350822" elapsed="0.273827"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.625129" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:23.637839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:23.638145" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:23.638243" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:23.624876" elapsed="0.013419"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:23.638663" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:23.640303" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:23.639582" elapsed="0.000964"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:23.641106" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:23.640738" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:23.640684" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:23.641668" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-28T03:07:23.641408" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:23.641372" elapsed="0.000501"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:23.641997" elapsed="0.000040"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:23.647668" elapsed="0.000373"/>
</kw>
<msg time="2026-04-28T03:07:23.648123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.646914" elapsed="0.001326"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:23.648460" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:23.648684" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:23.642768" elapsed="0.006036"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:23.346537" elapsed="0.302422"/>
</kw>
<msg time="2026-04-28T03:07:23.649039" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.345535" elapsed="0.303591"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:23.344712" elapsed="0.304540"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:23.652529" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:23.652092" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:23.652059" elapsed="0.000585"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.653066" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:23.653215" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:23.652844" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:23.654024" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:23.653467" elapsed="0.000624"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.654848" level="INFO">${conn_id} = 253</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:23.654314" elapsed="0.000571"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:23.656546" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:23.656628" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:23.655810" elapsed="0.000843"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.656810" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.658399" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:23.926718" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:23.657700" elapsed="0.269190"/>
</kw>
<msg time="2026-04-28T03:07:23.927016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.657330" elapsed="0.269906"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:23.655206" elapsed="0.272196"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:23.928059" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:24.031518" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:24.031869" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:24.032041" level="INFO">${stderr} = 2026-04-28T03:07:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:24Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:23.927700" elapsed="0.104405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:24.032558" elapsed="0.000582"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.034210" level="INFO">2026-04-28T03:07:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:24Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.033544" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.034784" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.034490" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.034440" elapsed="0.000533"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:24.035378" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-28T03:07:24.035097" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.035062" elapsed="0.000687"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.035852" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:24.041783" elapsed="0.000286"/>
</kw>
<msg time="2026-04-28T03:07:24.042116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.041282" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.042345" elapsed="0.000028"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.042537" elapsed="0.000024"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:24.036658" elapsed="0.005968"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:23.651175" elapsed="0.391546"/>
</kw>
<msg time="2026-04-28T03:07:24.042778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:23.650349" elapsed="0.392491"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:23.649534" elapsed="0.393388"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:20.567148" elapsed="3.475850"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:17.249782" elapsed="6.793270"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.044401" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:24.043807" elapsed="0.000623"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:07:24.044698" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.044525" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.044502" elapsed="0.000259"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:07:24.044930" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.046098" level="FAIL">'['5221', 'southbound']' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:24.045712" elapsed="0.000458">'['5221', 'southbound']' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:07:24.046265" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:07:24.045336" elapsed="0.000954"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.046873" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:24.046521" elapsed="0.000379"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.047389" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:24.047085" elapsed="0.000333"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.048175" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:24.047571" elapsed="0.000633"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.048774" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:07:24.048370" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.049261" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.049013" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.049997" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:07:24.049614" elapsed="0.000432"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:24.049376" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.049357" elapsed="0.000749"/>
</if>
<arg>${TEST_TAGS}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:07:24.043398" elapsed="0.006753"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:17.218866" elapsed="6.831339"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:24.057084" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsbug_br_5221 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsbug_br_5221 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:24.057436" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsbug_br_5221 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '333'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634/bridge/ovsbug_br_5221']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${bridge}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:24.050358" elapsed="0.007159"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:24.064787" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:24.064833" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:24.057689" elapsed="0.007260"/>
</kw>
<arg>Test Teardown</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${bridge}</arg>
<arg>expected_status=anything</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<arg>expected_status=anything</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:07:17.218297" elapsed="6.846718"/>
</kw>
<doc>In the case that an ovs node is rebooted, or the ovs service is
otherwise restarted, a controller initiated connection should reconnect when
the ovs is ready and available.</doc>
<tag>5221</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:07:06.922805" elapsed="17.142290">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']

Keyword 'Utils.Check For Elements At URI' failed after retrying for 8 seconds. The last error was: '{"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]}' does not contain 'ovsdb://10.30.170.161:6634'</status>
</test>
<test id="s1-s6-t4" name="Bug 5177" line="160">
<kw name="Test Setup" type="SETUP">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:07:24.073510" elapsed="0.000564"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:07:24.072892" elapsed="0.001311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.076547" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.076359" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.076311" elapsed="0.000309"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.081350" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.081237" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.081217" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.082461" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:24.082063" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.082967" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:07:24.082646" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:07:24.083040" elapsed="0.000033"/>
</return>
<msg time="2026-04-28T03:07:24.083202" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:07:24.081658" elapsed="0.001569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.088595" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.088484" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.088465" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.090003" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.089830" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.089813" elapsed="0.000331"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:24.090693" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:24.090286" elapsed="0.000435"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.091233" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:24.090973" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.125309" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:07:24.092675" elapsed="0.032886"/>
</kw>
<msg time="2026-04-28T03:07:24.125785" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:07:24.125834" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:24.091470" elapsed="0.034402"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.143878" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "1 "7 "7 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:07:24.127493" elapsed="0.016646"/>
</kw>
<msg time="2026-04-28T03:07:24.144343" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:07:24.144391" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "1 "7 "7 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:24.126201" elapsed="0.018232"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.145082" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:24.144634" elapsed="0.000619"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.144588" elapsed="0.000700"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.146096" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "1 "7 "7 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.145437" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.146585" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:24.146296" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.146277" elapsed="0.000503"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:07:24.146819" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:24.149592" elapsed="0.000179"/>
</kw>
<msg time="2026-04-28T03:07:24.149820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.148994" elapsed="0.000900"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.150121" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.150335" elapsed="0.000022"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:24.148089" elapsed="0.002396"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:07:24.147174" elapsed="0.003406"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:07:24.089474" elapsed="0.061208"/>
</kw>
<msg time="2026-04-28T03:07:24.150787" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:24.150969" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "1 "7 "7 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:24.088813" elapsed="0.062202"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:07:24.151220" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-28T03:07:24.151104" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.151083" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.151769" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.152211" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.152348" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:07:24.088138" elapsed="0.064328"/>
</kw>
<msg time="2026-04-28T03:07:24.152564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:24.152608" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "5 "1 "7 "7 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:24.083605" elapsed="0.069042"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.153049" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:24.152725" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.152707" elapsed="0.000421"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:07:24.083465" elapsed="0.069686"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:07:24.083284" elapsed="0.069905"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:07:24.080829" elapsed="0.072423"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:07:24.075525" elapsed="0.077788"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:24.074531" elapsed="0.078831"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:07:24.067773" elapsed="0.085649"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:24.067047" elapsed="0.086434"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.156041" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:24.155674" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.155397" elapsed="0.000738"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.156438" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:24.156543" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:24.156284" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.157225" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.156715" elapsed="0.000558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.157823" level="INFO">${conn_id} = 254</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:24.157425" elapsed="0.000424"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.158792" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:24.158869" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:24.158496" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.159069" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.160293" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:24.428199" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:24.159966" elapsed="0.268540"/>
</kw>
<msg time="2026-04-28T03:07:24.428626" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.159555" elapsed="0.269160"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:24.158079" elapsed="0.271406"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.430043" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:07:24.452535" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:24.452994" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:24.453096" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:24.429753" elapsed="0.023394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:24.453561" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.455215" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.454532" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.455822" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.455488" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.455437" elapsed="0.000579"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:24.456372" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:07:24.456136" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.456102" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.456635" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:24.464086" elapsed="0.000331"/>
</kw>
<msg time="2026-04-28T03:07:24.464475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.462814" elapsed="0.001724"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.464687" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.464839" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:24.457364" elapsed="0.007557"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:24.154866" elapsed="0.310163"/>
</kw>
<msg time="2026-04-28T03:07:24.465082" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.154292" elapsed="0.310835"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:24.153690" elapsed="0.311515"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.476352" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:24.476053" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.476030" elapsed="0.000412"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.476739" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:24.476850" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:24.476588" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.477415" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.477034" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.478020" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:24.477614" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.478930" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:24.479025" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:24.478643" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.479199" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.480373" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:24.746197" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:24.480059" elapsed="0.266355"/>
</kw>
<msg time="2026-04-28T03:07:24.746527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.479680" elapsed="0.266959"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:24.478255" elapsed="0.268557"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:24.747424" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:24.770014" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:24.770285" level="INFO">${stdout} = eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:24.770385" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:24.747125" elapsed="0.023313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:24.770820" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.772590" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.771886" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.773195" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:24.772866" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.772815" elapsed="0.000537"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:24.773709" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:07:24.773474" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:24.773437" elapsed="0.000542"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.774068" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:24.781221" elapsed="0.000177"/>
</kw>
<msg time="2026-04-28T03:07:24.781444" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.780583" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.781663" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.781819" elapsed="0.000024"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:24.774845" elapsed="0.007069"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:24.475478" elapsed="0.306567"/>
</kw>
<msg time="2026-04-28T03:07:24.782102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:24.474857" elapsed="0.307293"/>
</kw>
<msg time="2026-04-28T03:07:24.782264" level="INFO">${output} = eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:24.474319" elapsed="0.307971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.782844" level="INFO">eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:24.782472" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:24.783624" level="FAIL">'eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:24.783216" elapsed="0.000516">'eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:07:24.782991" elapsed="0.000816">'eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:07:24.782972" elapsed="0.000868">'eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:24.784072" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:24.783909" elapsed="0.000293"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:07:24.783892" elapsed="0.000335"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.784260" elapsed="0.000017"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:07:24.473771" elapsed="0.310599">'eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:24.784442" elapsed="0.000019"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:07:24.466011" elapsed="0.318556">'eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:25.801825" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:25.801520" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:25.801496" elapsed="0.000428"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:25.802249" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:25.802364" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:25.802090" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:25.802922" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:25.802533" elapsed="0.000452"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:25.803580" level="INFO">${conn_id} = 256</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:25.803134" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:25.804507" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:25.804584" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:25.804224" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:25.804758" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:25.806311" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:26.071249" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:25.805848" elapsed="0.265630"/>
</kw>
<msg time="2026-04-28T03:07:26.071608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:25.805360" elapsed="0.266366"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:25.803819" elapsed="0.268103"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.072631" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:26.095032" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:26.095437" level="INFO">${stdout} = eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:26.095554" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:26.072285" elapsed="0.023345"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:26.096166" elapsed="0.000621"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.098114" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.097336" elapsed="0.000885"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.098735" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:26.098408" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.098354" elapsed="0.000569"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:26.099413" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:07:26.099149" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.099058" elapsed="0.000644"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.099754" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:26.104972" elapsed="0.000226"/>
</kw>
<msg time="2026-04-28T03:07:26.105283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:26.104050" elapsed="0.001332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.105598" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.105819" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:26.100270" elapsed="0.005690"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:25.800976" elapsed="0.305119"/>
</kw>
<msg time="2026-04-28T03:07:26.106188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:25.800340" elapsed="0.305935"/>
</kw>
<msg time="2026-04-28T03:07:26.106594" level="INFO">${output} = eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:25.799797" elapsed="0.306835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.107550" level="INFO">eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.106849" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:26.108595" elapsed="0.000832"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.107923" elapsed="0.001590"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.107866" elapsed="0.001706"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.110185" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.109694" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.109659" elapsed="0.000703"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:26.110437" elapsed="0.000070"/>
</return>
<msg time="2026-04-28T03:07:26.110793" level="INFO">${output} = eec82428-6b3b-43c8-acca-fd0ec1aff412
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:07:25.799316" elapsed="0.311534"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:26.110990" elapsed="0.000059"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:07:25.785545" elapsed="0.325764"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:07:24.465467" elapsed="1.645942"/>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.126231" level="INFO">${uuid} = </msg>
<var>${uuid}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:26.124322" elapsed="0.001936"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:26.132334" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:26.132580" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:26.132856" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${controller_http_session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:26.126409" elapsed="0.006486"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.140613" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.139516" elapsed="0.001139"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.136705" elapsed="0.004008"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.140979" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.140750" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.136678" elapsed="0.004414"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.141657" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.141290" elapsed="0.000484"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:26.141836" elapsed="0.000043"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:26.133330" elapsed="0.008709"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.145674" level="INFO">${json_data} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.145199" elapsed="0.000504"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-28T03:07:26.145751" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:07:26.145976" level="INFO">${resp_json} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${resp_json}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-28T03:07:26.142337" elapsed="0.003668"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:26.146412" level="INFO">${topologies} = [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c...</msg>
<var>${topologies}</var>
<arg>${resp_json}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.146185" elapsed="0.000254"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-28T03:07:26.146810" level="INFO">${topology} = {'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c4...</msg>
<var>${topology}</var>
<arg>${topologies}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.146587" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:26.147230" level="INFO">${node_list} = [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/networ...</msg>
<var>${node_list}</var>
<arg>${topology}</arg>
<arg>node</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.146998" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.147686" level="INFO">[{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']", 'ovsdb:bridge-name': 'ovscon_br1', 'ovsdb:datapath-type': 'ovsdb:datapath-type-system', 'termination-point': [{'tp-id': 'ovscon_br1', 'ovsdb:port-uuid': '51203667-71a3-451c-8172-21739eec13fd', 'ovsdb:ingress-policing-burst': 0, 'ovsdb:name': 'ovscon_br1', 'ovsdb:interface-uuid': '3e6b1b62-e748-4a10-8e3f-d48aedf83ef4', 'ovsdb:ingress-policing-rate': 0, 'ovsdb:interface-type': 'ovsdb:interface-type-internal', 'ovsdb:mac-in-use': '26:42:56:a9:ca:4c', 'ovsdb:ofport': 65534, 'ovsdb:ifindex': 4}], 'ovsdb:datapath-id': '00:00:26:42:56:a9:ca:4c'}, {'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsdb:interface-type-tap'}, {'interface-type': 'ovsdb:interface-type-stt'}, {'interface-type': 'ovsdb:interface-type-internal'}, {'interface-type': 'ovsdb:interface-type-patch'}, {'interface-type': 'ovsdb:interface-type-lisp'}, {'interface-type': 'ovsdb:interface-type-geneve'}, {'interface-type': 'ovsdb:interface-type-gre'}, {'interface-type': 'ovsdb:interface-type-system'}], 'ovsdb:ovs-version': '2.17.11', 'ovsdb:connection-info': {'local-port': 6640, 'remote-port': 32962, 'local-ip': '10.30.170.159', 'remote-ip': '10.30.170.161'}, 'ovsdb:openvswitch-external-ids': [{'external-id-key': 'system-id', 'external-id-value': '3eb07ef3-5df0-4195-8cad-5c56eb67b298'}, {'external-id-key': 'hostname', 'external-id-value': 'ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d'}, {'external-id-key': 'rundir', 'external-id-value': '/var/run/openvswitch'}], 'ovsdb:datapath-type-entry': [{'datapath-type': 'ovsdb:datapath-type-netdev'}, {'datapath-type': 'ovsdb:datapath-type-system'}], 'ovsdb:manager-entry': [{'target': 'tcp:10.30.170.159:6640', 'number_of_connections': 1, 'connected': True}], 'ovsdb:managed-node-entry': [{'bridge-ref': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]</msg>
<arg>${node_list}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.147406" elapsed="0.000341"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:26.148303" level="INFO">${node_id} = ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_id}</var>
<arg>${node}</arg>
<arg>node-id</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.148129" elapsed="0.000200"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:26.150656" level="INFO">${node_uuid} = 9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_uuid}</var>
<arg>${node_id}</arg>
<arg>ovsdb://uuid/</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.148475" elapsed="0.002208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:26.151414" level="FAIL">Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:07:26.151220" elapsed="0.000309">Dictionary does not contain key 'ovsdb:connection-info'.</status>
</kw>
<msg time="2026-04-28T03:07:26.151638" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:07:26.151681" level="INFO">${connection_info} = Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<var>${status}</var>
<var>${connection_info}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.150850" elapsed="0.000853"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:26.152388" level="FAIL">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:07:26.152207" elapsed="0.000512">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</status>
</kw>
<msg time="2026-04-28T03:07:26.152828" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:07:26.152872" level="INFO">${remote_ip} = ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<var>${status}</var>
<var>${remote_ip}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.151861" elapsed="0.001033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.153476" level="FAIL">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<var>${uuid}</var>
<arg>'${remote_ip}' == '${ovs_system_ip}'</arg>
<arg>${node_uuid}</arg>
<arg>${uuid}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="FAIL" start="2026-04-28T03:07:26.153104" elapsed="0.000463">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<var name="${node}">{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network...</var>
<status status="FAIL" start="2026-04-28T03:07:26.148003" elapsed="0.005674">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</iter>
<var>${node}</var>
<value>@{node_list}</value>
<status status="FAIL" start="2026-04-28T03:07:26.147804" elapsed="0.005938">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</for>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.153797" elapsed="0.000016"/>
</return>
<var>${OVSDB_UUID}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="FAIL" start="2026-04-28T03:07:26.123866" elapsed="0.030030">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.154125" elapsed="0.000025"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${OVSDB_UUID}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.154305" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${node}</var>
<arg>uuid/${OVSDB_UUID}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.154464" elapsed="0.000020"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<arg>${node}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE}</arg>
<arg>0000000000005177</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.154751" elapsed="0.000026"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.154923" elapsed="0.000035"/>
</kw>
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-04-28T03:07:26.155256" elapsed="0.000025"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${node}/bridge/${BRIDGE}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.155418" elapsed="0.000020"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.155617" elapsed="0.000022"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>@{list}</var>
<arg>${BRIDGE}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.155781" elapsed="0.000020"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>8s</arg>
<arg>2s</arg>
<arg>Utils.Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>${list}</arg>
<arg>pretty_print_json=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.155965" elapsed="0.000021"/>
</kw>
<kw name="Run Keywords" owner="BuiltIn" type="TEARDOWN">
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.157631" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.157222" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:07:26.157868" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:26.157729" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.157712" elapsed="0.000217"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:07:26.158101" elapsed="0.000209"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.159182" level="FAIL">'5177' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:26.158812" elapsed="0.000428">'5177' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:07:26.159328" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:07:26.158467" elapsed="0.000889"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.159836" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5177</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:26.159511" elapsed="0.000350"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.160312" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5177</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:26.160026" elapsed="0.000311"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.160776" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.160483" elapsed="0.000318"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.163256" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5177

Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:07:26.160958" elapsed="0.002349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.163739" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5177</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.163495" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.164439" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5177'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:07:26.164097" elapsed="0.000392"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.163850" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.163832" elapsed="0.000717"/>
</if>
<arg>5177</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:07:26.156850" elapsed="0.007743"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:26.171021" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:26.171166" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:26.171272" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:26.165131" elapsed="0.006166"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.176571" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.175698" elapsed="0.000916"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.173751" elapsed="0.002922"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.176920" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.176710" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.173732" elapsed="0.003323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.177613" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.177251" elapsed="0.000441"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:26.177755" elapsed="0.000047"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:26.171563" elapsed="0.006400"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:26.183923" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:26.184223" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:26.184444" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:26.178172" elapsed="0.006311"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.192211" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.191123" elapsed="0.001130"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.188327" elapsed="0.003985"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.192562" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.192349" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.188300" elapsed="0.004375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.193256" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.192872" elapsed="0.000509"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:26.193445" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:26.184894" elapsed="0.008730"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:26.164811" elapsed="0.028887"/>
</kw>
<arg>Utils.Report_Failure_Due_To_Bug</arg>
<arg>5177</arg>
<arg>AND</arg>
<arg>OVSDB.Log Config And Operational Topology</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:07:26.156267" elapsed="0.037494"/>
</kw>
<doc>This test case will recreate the bug using the same basic steps as
provided in the bug, and noted here:
1) create bridge in config using the UUID determined in Suite Setup
2) connect ovs (vsctl set-manager)
3) Fail if node is not discovered in Operational Store</doc>
<tag>5177</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5177</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:07:24.065368" elapsed="2.128507">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5177

Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</test>
<test id="s1-s6-t5" name="Bug 4794" line="191">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:07:26.198058" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:07:26.197788" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.199313" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:26.199202" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.199184" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.204092" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:26.203987" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.203969" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.205136" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:26.204745" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.205603" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:07:26.205313" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:07:26.205672" elapsed="0.000029"/>
</return>
<msg time="2026-04-28T03:07:26.205823" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:07:26.204377" elapsed="0.001469"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.210918" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:26.210813" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.210795" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.212286" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:26.212181" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.212164" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:26.212786" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.212488" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.213210" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:26.212979" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.241806" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:07:26.213708" elapsed="0.028200"/>
</kw>
<msg time="2026-04-28T03:07:26.242095" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:07:26.242141" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.213386" elapsed="0.028790"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.263061" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:07:26.242670" elapsed="0.020486"/>
</kw>
<msg time="2026-04-28T03:07:26.263314" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:07:26.263359" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.242338" elapsed="0.021063"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.263692" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.263478" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.263460" elapsed="0.000369"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.264285" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.263991" elapsed="0.000357"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.264621" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.264415" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.264398" elapsed="0.000300"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:07:26.264730" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:26.267369" elapsed="0.000161"/>
</kw>
<msg time="2026-04-28T03:07:26.267592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:26.266158" elapsed="0.001561"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.268065" elapsed="0.000077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.268394" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:26.265526" elapsed="0.003051"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:07:26.265008" elapsed="0.003775"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:07:26.211856" elapsed="0.057024"/>
</kw>
<msg time="2026-04-28T03:07:26.269083" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:26.269131" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.211223" elapsed="0.057948"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:07:26.269518" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-28T03:07:26.269250" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.269231" elapsed="0.000373"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.270017" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.270347" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:07:26.270418" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:07:26.210482" elapsed="0.060041"/>
</kw>
<msg time="2026-04-28T03:07:26.270614" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:26.270657" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "4 "7 "9 "4 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.206232" elapsed="0.064462"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.271041" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.270767" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.270751" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:07:26.206097" elapsed="0.065045"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:07:26.205902" elapsed="0.065271"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:07:26.203616" elapsed="0.067611"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:07:26.198886" elapsed="0.072394"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:26.198464" elapsed="0.072859"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:07:26.195566" elapsed="0.075807"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.271832" level="INFO">${node_id} = uuid%2F</msg>
<var>${node_id}</var>
<arg>uuid%2F${OVSDB_UUID}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:26.271530" elapsed="0.000327"/>
</kw>
<kw name="Delete Bridge From Ovsdb Node" owner="OVSDB">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:26.278246" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:26.278554" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '315'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid//bridge/ovsbug_br']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-28T03:07:26.278667" level="FAIL">Url: http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br Expected status: 409 != 204</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${bridge}</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-28T03:07:26.272456" elapsed="0.007202">Url: http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br Expected status: 409 != 204</status>
</kw>
<arg>${node_id}</arg>
<arg>${BRIDGE}</arg>
<doc>This request will delete the bridge node from the OVSDB</doc>
<status status="FAIL" start="2026-04-28T03:07:26.272102" elapsed="0.007733">Url: http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br Expected status: 409 != 204</status>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.280166" elapsed="0.000038"/>
</kw>
<kw name="Verify_Keyword_Does_Not_Fail_Within_Timeout" owner="WaitForFailure">
<arg>10s</arg>
<arg>1s</arg>
<arg>Utils.Check Karaf Log File Does Not Have Messages</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>Shard.*shard-topology-operational An exception occurred while preCommitting transaction</arg>
<doc>Some positive checks report false success for a short time. This keyword verifies no failure does happen within timeout period.
This implementation needs more complicated logic than, Verify_Keyword_Never_Passes_Within_Timeout,
so use that keyword in case you have a negative check handy.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.280449" elapsed="0.000036"/>
</kw>
<kw name="Run Keywords" owner="BuiltIn" type="TEARDOWN">
<kw name="Test Teardown">
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:26.288846" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:26.289044" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:26.289184" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:26.282799" elapsed="0.006423"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.297162" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.296272" elapsed="0.000934"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.293061" elapsed="0.004223"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.297548" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.297322" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.293033" elapsed="0.004641"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.298294" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.297897" elapsed="0.000476"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:26.298437" elapsed="0.000055"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:26.289632" elapsed="0.009059"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:26.303342" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:26.303539" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:26.303657" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:26.298984" elapsed="0.004699"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.308921" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:26.308198" elapsed="0.000767"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.306269" elapsed="0.002738"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.309173" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.309032" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.306251" elapsed="0.002999"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.309634" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.309387" elapsed="0.000367"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:26.309798" elapsed="0.000030"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:26.303990" elapsed="0.005936"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:26.282361" elapsed="0.027632"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:26.313996" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:26.313582" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:26.313555" elapsed="0.000558"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.314522" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:26.314672" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:26.314329" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.315566" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:26.314920" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.316428" level="INFO">${conn_id} = 257</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:26.315854" elapsed="0.000612"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:26.318157" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:26.318273" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:26.317399" elapsed="0.000909"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:26.318553" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.321351" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:26.616082" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:26.319931" elapsed="0.296397"/>
</kw>
<msg time="2026-04-28T03:07:26.616671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:26.319413" elapsed="0.297358"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:26.316771" elapsed="0.300129"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:26.617556" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:27.805499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:27.805897" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:27.806045" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:26.617301" elapsed="1.188805"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:27.806680" elapsed="0.000664"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:27.808470" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:27.807775" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:27.809132" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:27.808794" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:27.808741" elapsed="0.000674"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:27.809787" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-28T03:07:27.809548" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:27.809512" elapsed="0.000512"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:27.810103" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:27.816693" elapsed="0.000218"/>
</kw>
<msg time="2026-04-28T03:07:27.817105" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:27.815911" elapsed="0.001270"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:27.817336" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:27.817488" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:27.810859" elapsed="0.006711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:26.312746" elapsed="1.504915"/>
</kw>
<msg time="2026-04-28T03:07:27.817714" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:26.311922" elapsed="1.505852"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:26.311283" elapsed="1.506571"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:27.820232" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:27.819962" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:27.819928" elapsed="0.000383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:27.820590" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:27.820700" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:27.820452" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:27.821267" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:27.820873" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:27.822109" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:27.821461" elapsed="0.000675"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:27.823126" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:27.823205" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:27.822776" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:27.823380" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:27.825406" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:28.115223" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:27.824302" elapsed="0.291159"/>
</kw>
<msg time="2026-04-28T03:07:28.115757" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:27.823951" elapsed="0.291911"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:27.822345" elapsed="0.293675"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.116573" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:28.159647" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:28.160031" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:28.160130" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:28.116334" elapsed="0.043848"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:28.160620" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.162037" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:28.161398" elapsed="0.000733"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:28.162665" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:28.162328" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.162280" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:28.163202" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:07:28.162966" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.162905" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:28.163468" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:28.170783" elapsed="0.000229"/>
</kw>
<msg time="2026-04-28T03:07:28.171169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.169382" elapsed="0.001863"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.171398" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.171550" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:28.164165" elapsed="0.007469"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:27.819393" elapsed="0.352332"/>
</kw>
<msg time="2026-04-28T03:07:28.171779" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:27.818807" elapsed="0.353252"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:27.818050" elapsed="0.354097"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:26.310871" elapsed="1.861335"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.174410" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:28.174115" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.174095" elapsed="0.000395"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.175049" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:28.175157" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:28.174634" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.175716" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:28.175329" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.176319" level="INFO">${conn_id} = 259</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:28.175918" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.177264" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:28.177339" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:28.176977" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.177510" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.179105" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:28.453796" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:28.178423" elapsed="0.275581"/>
</kw>
<msg time="2026-04-28T03:07:28.454127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.178063" elapsed="0.276189"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:28.176553" elapsed="0.277881"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.455105" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:28.477699" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:28.477982" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:28.478103" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:28.454750" elapsed="0.023405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:28.478507" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.480081" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:28.479416" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:28.480640" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:28.480353" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.480302" elapsed="0.000494"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:28.481180" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:07:28.480912" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.480879" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:28.481438" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:28.487874" elapsed="0.000242"/>
</kw>
<msg time="2026-04-28T03:07:28.488161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.487182" elapsed="0.001042"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.488374" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.488527" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:28.482184" elapsed="0.006422"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:28.173546" elapsed="0.315150"/>
</kw>
<msg time="2026-04-28T03:07:28.488748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.172963" elapsed="0.315842"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:28.172419" elapsed="0.316462"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.495115" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:28.494443" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.494391" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.496021" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:28.496270" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:28.495653" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.497692" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:28.496648" elapsed="0.001149"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.499041" level="INFO">${conn_id} = 260</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:28.498181" elapsed="0.000919"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.501134" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:28.501304" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:28.500511" elapsed="0.000845"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.501691" elapsed="0.000776"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.503755" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:28.806038" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:28.503080" elapsed="0.303127"/>
</kw>
<msg time="2026-04-28T03:07:28.806313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.502715" elapsed="0.303722"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:28.499563" elapsed="0.307053"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.807632" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:28.891085" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:28.891377" level="INFO">${stdout} =  * Exiting ovs-vswitchd (10379)
 * Exiting ovsdb-server (10356)</msg>
<msg time="2026-04-28T03:07:28.891489" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:28.806956" elapsed="0.084588"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:28.891991" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.894058" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:28.893331" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:28.894652" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:28.894347" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.894293" elapsed="0.000516"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:28.895207" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:07:28.894924" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.894891" elapsed="0.000500"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:28.895463" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:28.901450" elapsed="0.000322"/>
</kw>
<msg time="2026-04-28T03:07:28.901834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.900521" elapsed="0.001445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.902182" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.902396" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:28.896336" elapsed="0.006173"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:28.493082" elapsed="0.409559"/>
</kw>
<msg time="2026-04-28T03:07:28.902716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.491483" elapsed="0.411316"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:28.489092" elapsed="0.413815"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:28.905975" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:28.905573" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:28.905547" elapsed="0.000539"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.906469" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:28.906608" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:28.906288" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.907396" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:28.906841" elapsed="0.000619"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.908200" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:28.907664" elapsed="0.000572"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:28.909505" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:28.909610" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:28.909111" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.909849" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:28.911590" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:29.221043" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:28.910950" elapsed="0.310264"/>
</kw>
<msg time="2026-04-28T03:07:29.221316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.910570" elapsed="0.310865"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:28.908522" elapsed="0.313078"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.222277" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:29.234721" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:29.234876" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:29.234960" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:29.221922" elapsed="0.013073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:29.235216" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:29.236480" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:29.235843" elapsed="0.000728"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:29.237064" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:29.236743" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:29.236692" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:29.237565" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-28T03:07:29.237334" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:29.237301" elapsed="0.000470"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:29.237846" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:29.244969" elapsed="0.000498"/>
</kw>
<msg time="2026-04-28T03:07:29.245563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.243729" elapsed="0.001972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:29.246130" elapsed="0.000050"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:29.246477" elapsed="0.000045"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:29.238564" elapsed="0.008070"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:28.904785" elapsed="0.341995"/>
</kw>
<msg time="2026-04-28T03:07:29.246833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:28.904020" elapsed="0.342874"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:28.903270" elapsed="0.343723"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:29.249111" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:29.248828" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:29.248809" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.249465" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:29.249566" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:29.249333" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:29.250146" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:29.249751" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.250709" level="INFO">${conn_id} = 262</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:29.250338" elapsed="0.000396"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:29.251790" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:29.251865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:29.251513" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.252051" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.253525" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:29.518115" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:29.252875" elapsed="0.265400"/>
</kw>
<msg time="2026-04-28T03:07:29.518378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.252521" elapsed="0.265971"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:29.251104" elapsed="0.267544"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.519285" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:29.634086" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:29.634402" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:29.634514" level="INFO">${stderr} = 2026-04-28T03:07:29Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:29Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:29Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:29.518931" elapsed="0.115642"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:29.635051" elapsed="0.000551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:29.636731" level="INFO">2026-04-28T03:07:29Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:29Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:29Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:29.636058" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:29.637482" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:29.637169" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:29.637112" elapsed="0.000586"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:29.638120" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:07:29.637828" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:29.637791" elapsed="0.000534"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:29.638406" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:29.644647" elapsed="0.000384"/>
</kw>
<msg time="2026-04-28T03:07:29.645095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.643870" elapsed="0.001316"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:29.645397" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:29.645629" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:29.639162" elapsed="0.006596"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:29.248279" elapsed="0.397608"/>
</kw>
<msg time="2026-04-28T03:07:29.645985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.247709" elapsed="0.398361"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:29.247189" elapsed="0.398992"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:26.310469" elapsed="3.335791"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:29.650396" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:29.650033" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:29.650006" elapsed="0.000500"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.650877" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:29.651040" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:29.650698" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:29.651803" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:29.651276" elapsed="0.000590"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.652600" level="INFO">${conn_id} = 263</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:29.652089" elapsed="0.000546"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:29.654290" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:29.654399" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:29.653815" elapsed="0.000617"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.654646" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.656681" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:29.979067" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:29.655584" elapsed="0.323685"/>
</kw>
<msg time="2026-04-28T03:07:29.979628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.655235" elapsed="0.324486"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:29.652919" elapsed="0.326923"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:29.980525" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:32.469409" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:32.469789" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:32.469896" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:29.980284" elapsed="2.489714"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:32.470476" elapsed="0.000585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:32.472148" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:32.471471" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:32.473384" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:32.473025" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:32.472926" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:32.473907" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-28T03:07:32.473669" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:32.473636" elapsed="0.000498"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:32.474209" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:32.479258" elapsed="0.000203"/>
</kw>
<msg time="2026-04-28T03:07:32.479609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.478658" elapsed="0.001024"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:32.479836" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:32.480034" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:32.474965" elapsed="0.005184"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:29.649209" elapsed="2.831082"/>
</kw>
<msg time="2026-04-28T03:07:32.480348" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:29.648393" elapsed="2.832027"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:29.647671" elapsed="2.832830"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:32.482710" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:32.482444" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:32.482425" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.483284" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:32.483393" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:32.483142" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:32.485856" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:32.483622" elapsed="0.002286"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.486477" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:32.486085" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:32.487479" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:32.487558" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:32.487147" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.487732" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.489714" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:32.775624" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:32.488728" elapsed="0.287152"/>
</kw>
<msg time="2026-04-28T03:07:32.776287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.488360" elapsed="0.288027"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:32.486715" elapsed="0.289809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.777092" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:32.809843" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:32.810132" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:32.810229" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:32.776761" elapsed="0.033518"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:32.810640" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:32.812270" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:32.811559" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:32.812839" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:32.812543" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:32.812491" elapsed="0.000550"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:32.813411" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:07:32.813164" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:32.813129" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:32.813667" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:32.820927" elapsed="0.000234"/>
</kw>
<msg time="2026-04-28T03:07:32.821324" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.819721" elapsed="0.001671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:32.821547" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:32.821701" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:32.814386" elapsed="0.007396"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:32.481858" elapsed="0.340014"/>
</kw>
<msg time="2026-04-28T03:07:32.821924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.481221" elapsed="0.340783"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:32.480680" elapsed="0.341403"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:29.647151" elapsed="3.175050"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:32.824630" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:32.824359" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:32.824338" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.825002" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:32.825105" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:32.824851" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:32.825665" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:32.825277" elapsed="0.000434"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.826273" level="INFO">${conn_id} = 265</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:32.825867" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:32.827225" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:32.827300" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:32.826928" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.827472" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:32.829086" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:33.097188" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:32.828376" elapsed="0.269003"/>
</kw>
<msg time="2026-04-28T03:07:33.097499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.827967" elapsed="0.269668"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:32.826510" elapsed="0.271291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.098424" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:33.121026" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:33.121288" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:33.121384" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:33.098124" elapsed="0.023308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:33.121788" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.123353" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:33.122689" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:33.123978" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:33.123620" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.123569" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:33.124557" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:07:33.124285" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.124239" elapsed="0.000501"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:33.124812" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:33.132550" elapsed="0.000510"/>
</kw>
<msg time="2026-04-28T03:07:33.133123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.131320" elapsed="0.001880"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.133370" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.133636" elapsed="0.000024"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:33.125627" elapsed="0.008099"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:32.823505" elapsed="0.310315"/>
</kw>
<msg time="2026-04-28T03:07:33.133875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:32.822918" elapsed="0.311034"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:32.822389" elapsed="0.311646"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.136314" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:33.136012" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.135990" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.136671" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:33.136774" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:33.136535" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.137356" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:33.136970" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.137969" level="INFO">${conn_id} = 266</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:33.137552" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.138908" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:33.139000" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:33.138616" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.139173" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.140676" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:33.452208" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:33.140037" elapsed="0.312378"/>
</kw>
<msg time="2026-04-28T03:07:33.452557" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.139649" elapsed="0.313080"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:33.138206" elapsed="0.314682"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.453398" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:33.607777" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:33.608103" level="INFO">${stdout} =  * Exiting ovs-vswitchd (5418)
 * Exiting ovsdb-server (5395)</msg>
<msg time="2026-04-28T03:07:33.608243" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:33.453130" elapsed="0.155181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:33.608687" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.610272" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:33.609605" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:33.610846" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:33.610550" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.610493" elapsed="0.000658"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:33.611537" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-28T03:07:33.611287" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.611250" elapsed="0.000508"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:33.611834" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:33.617906" elapsed="0.000258"/>
</kw>
<msg time="2026-04-28T03:07:33.618209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.617330" elapsed="0.000945"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.618428" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.618584" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:33.612557" elapsed="0.006110"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:33.135416" elapsed="0.483343"/>
</kw>
<msg time="2026-04-28T03:07:33.618812" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.134831" elapsed="0.484042"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:33.134230" elapsed="0.484741"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.621211" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:33.620917" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.620899" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.621570" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:33.621672" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:33.621435" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.622242" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:33.621841" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.622821" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:33.622439" elapsed="0.000408"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.623805" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:33.623884" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:33.623488" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.624082" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.626033" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:33.900510" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:33.625032" elapsed="0.275718"/>
</kw>
<msg time="2026-04-28T03:07:33.900898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.624562" elapsed="0.276550"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:33.623073" elapsed="0.278287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.902498" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:33.925175" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:33.925461" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:33.925556" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:33.902011" elapsed="0.023595"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:33.926041" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.927750" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:33.926930" elapsed="0.000917"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:33.928374" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:33.928056" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.928002" elapsed="0.000530"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:33.928886" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-28T03:07:33.928648" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.928615" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:33.929181" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:33.936160" elapsed="0.000261"/>
</kw>
<msg time="2026-04-28T03:07:33.936472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.935127" elapsed="0.001417"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.936698" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.936854" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:33.929869" elapsed="0.007097"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:33.620359" elapsed="0.316706"/>
</kw>
<msg time="2026-04-28T03:07:33.937118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.619736" elapsed="0.317443"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:33.619168" elapsed="0.318088"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:33.939459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:33.939161" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:33.939139" elapsed="0.000441"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.939864" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:33.939988" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:33.939723" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.940554" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:33.940164" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.941154" level="INFO">${conn_id} = 268</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:33.940748" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:33.942109" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:33.942185" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:33.941804" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.942356" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:33.943972" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:34.218002" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:39 UTC 2026

  System load:  0.01               Processes:             115
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:33.943274" elapsed="0.274908"/>
</kw>
<msg time="2026-04-28T03:07:34.218285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.942836" elapsed="0.275573"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:33.941390" elapsed="0.277190"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.219250" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:34.323668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:34.323922" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:34.324068" level="INFO">${stderr} = 2026-04-28T03:07:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:34Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:34.218896" elapsed="0.105229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:34.324477" elapsed="0.000447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.326006" level="INFO">2026-04-28T03:07:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:34.325353" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.326575" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.326289" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.326238" elapsed="0.000492"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:34.327114" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:07:34.326844" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.326812" elapsed="0.000483"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.327441" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:34.334570" elapsed="0.000568"/>
</kw>
<msg time="2026-04-28T03:07:34.335237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.333391" elapsed="0.002025"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.335812" elapsed="0.000051"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.336197" elapsed="0.000048"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:34.328160" elapsed="0.008219"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:33.938581" elapsed="0.397995"/>
</kw>
<msg time="2026-04-28T03:07:34.336694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:33.937993" elapsed="0.398831"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:33.937456" elapsed="0.399577"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:29.646556" elapsed="4.690601"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.310113" elapsed="8.027156"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.340445" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:34.338836" elapsed="0.001637"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:07:34.340689" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.340548" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.340530" elapsed="0.000270"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:07:34.340981" elapsed="0.000216"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.342088" level="FAIL">'['4794', 'southbound']' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:34.341710" elapsed="0.000447">'['4794', 'southbound']' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:07:34.342249" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:07:34.341351" elapsed="0.000923"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.342774" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:34.342439" elapsed="0.000362"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.343267" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:34.342976" elapsed="0.000318"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.343813" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:34.343487" elapsed="0.000352"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.344380" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']

Url: http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br Expected status: 409 != 204</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:07:34.344001" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.344807" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:34.344571" elapsed="0.000280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.345517" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:07:34.345162" elapsed="0.000401"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:34.344917" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.344899" elapsed="0.000721"/>
</if>
<arg>${TEST_TAGS}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:07:34.337995" elapsed="0.007670"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:26.281831" elapsed="8.063886"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:34.353149" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:34.353299" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '315'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid//bridge/ovsbug_br']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:34.345872" elapsed="0.007507"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:34.358422" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:34.358704" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '298'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:34.353547" elapsed="0.005227"/>
</kw>
<arg>Test Teardown</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}</arg>
<arg>expected_status=anything</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:07:26.280856" elapsed="8.077990"/>
</kw>
<doc>This test is dependent on the work done in the Bug 5177 test case so should
always be executed immediately after.
1) delete bridge in config
2) Poll and Fail if exception is seen in karaf.log</doc>
<tag>4794</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:07:26.194419" elapsed="8.164717">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']

Url: http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br Expected status: 409 != 204</status>
</test>
<test id="s1-s6-t6" name="Bug 8280" line="213">
<kw name="Test Setup" type="SETUP">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:07:34.368196" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:07:34.367917" elapsed="0.000544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.369434" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.369325" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.369306" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.374062" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.373945" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.373914" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.375100" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:34.374711" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.375610" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:07:34.375279" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:07:34.375679" elapsed="0.000030"/>
</return>
<msg time="2026-04-28T03:07:34.375833" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:07:34.374346" elapsed="0.001511"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.381149" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.381043" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.381025" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.382468" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.382324" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.382307" elapsed="0.000297"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:34.383156" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:34.382741" elapsed="0.000441"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.383676" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:34.383402" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.416596" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:07:34.385036" elapsed="0.031798"/>
</kw>
<msg time="2026-04-28T03:07:34.417111" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:07:34.417180" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:34.383884" elapsed="0.033349"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.435225" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "8 "2 "8 "0 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:07:34.419376" elapsed="0.016032"/>
</kw>
<msg time="2026-04-28T03:07:34.435557" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:07:34.435602" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "8 "2 "8 "0 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:34.417569" elapsed="0.018070"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.436094" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:34.435770" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.435748" elapsed="0.000538"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.437075" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "8 "2 "8 "0 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:34.436499" elapsed="0.000678"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.437540" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:34.437262" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.437244" elapsed="0.000481"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:07:34.437759" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:34.440235" elapsed="0.000166"/>
</kw>
<msg time="2026-04-28T03:07:34.440445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.439760" elapsed="0.000753"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.440720" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.440931" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:34.438873" elapsed="0.002224"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:07:34.438048" elapsed="0.003145"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:07:34.381974" elapsed="0.059318"/>
</kw>
<msg time="2026-04-28T03:07:34.441385" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:34.441429" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "8 "2 "8 "0 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:34.381359" elapsed="0.060109"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:07:34.441652" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-28T03:07:34.441545" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.441527" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.442168" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.442533" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.442605" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:07:34.380686" elapsed="0.062026"/>
</kw>
<msg time="2026-04-28T03:07:34.442806" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:34.442849" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "8 "2 "8 "0 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:34.376247" elapsed="0.066640"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.443231" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:34.442982" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.442964" elapsed="0.000358"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:07:34.376106" elapsed="0.067239"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:07:34.375914" elapsed="0.067463"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:07:34.373567" elapsed="0.069864"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:07:34.369039" elapsed="0.074447"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:34.368604" elapsed="0.074927"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:07:34.363293" elapsed="0.080289"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:34.362541" elapsed="0.081087"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.446056" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:34.445738" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.445521" elapsed="0.000619"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.446421" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:34.446523" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:34.446283" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.447089" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager tcp:10.30.170.159:6640" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:34.446694" elapsed="0.000442"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.447729" level="INFO">${conn_id} = 269</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:34.447296" elapsed="0.000459"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.448658" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:34.448735" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:34.448375" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.448908" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.450096" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:34.722073" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:34.449764" elapsed="0.272450"/>
</kw>
<msg time="2026-04-28T03:07:34.722312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.449422" elapsed="0.272982"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:34.447989" elapsed="0.274569"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.723195" level="INFO">Executing command 'sudo ovs-vsctl set-manager tcp:10.30.170.159:6640'.</msg>
<msg time="2026-04-28T03:07:34.745548" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:34.745789" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:34.745883" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:34.722839" elapsed="0.023125"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:34.746318" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.747780" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:34.747190" elapsed="0.000682"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.748344" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:34.748068" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.748019" elapsed="0.000479"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:34.748857" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-28T03:07:34.748613" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.748580" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:34.749142" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:34.757295" elapsed="0.000329"/>
</kw>
<msg time="2026-04-28T03:07:34.757719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.756097" elapsed="0.001752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.758358" elapsed="0.000052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.758710" elapsed="0.000043"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:34.749792" elapsed="0.009107"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:34.445007" elapsed="0.314142"/>
</kw>
<msg time="2026-04-28T03:07:34.759352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.444419" elapsed="0.315037"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:34.443823" elapsed="0.315806"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:34.775197" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:34.774882" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:34.774863" elapsed="0.000416"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.775572" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:34.775674" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:34.775444" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.776247" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:34.775848" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.776811" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:34.776440" elapsed="0.000396"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:34.777883" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:34.777987" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:34.777606" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.778164" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:34.779354" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:35.044068" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:34.779006" elapsed="0.265182"/>
</kw>
<msg time="2026-04-28T03:07:35.044261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.778642" elapsed="0.265689"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:34.777220" elapsed="0.267227"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:35.044886" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:35.067041" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:35.067327" level="INFO">${stdout} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:35.067428" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:35.044657" elapsed="0.022820"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:35.067824" elapsed="0.000474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:35.069361" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:35.068681" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:35.069903" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:35.069627" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:35.069580" elapsed="0.000507"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:35.070438" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:07:35.070204" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:35.070170" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:35.070696" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:35.076700" elapsed="0.000145"/>
</kw>
<msg time="2026-04-28T03:07:35.076966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:35.076233" elapsed="0.000798"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:35.077185" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:35.077342" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:35.071464" elapsed="0.005959"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:34.774357" elapsed="0.303156"/>
</kw>
<msg time="2026-04-28T03:07:35.077566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:34.773788" elapsed="0.303825"/>
</kw>
<msg time="2026-04-28T03:07:35.077723" level="INFO">${output} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:34.773279" elapsed="0.304470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:35.078164" level="INFO">0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:35.077902" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:35.078858" level="FAIL">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:35.078489" elapsed="0.000441">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:07:35.078277" elapsed="0.000761">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:07:35.078259" elapsed="0.000819">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:35.079322" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:35.079167" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:07:35.079147" elapsed="0.000255"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:35.079434" elapsed="0.000014"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:07:34.772822" elapsed="0.306713">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:35.079595" elapsed="0.000015"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:07:34.761427" elapsed="0.318260">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:36.097018" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:36.096685" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:36.096660" elapsed="0.000463"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:36.097442" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:36.097560" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:36.097269" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:36.098142" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:36.097738" elapsed="0.000451"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:36.098760" level="INFO">${conn_id} = 271</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:36.098337" elapsed="0.000522"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:36.099759" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:36.099835" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:36.099479" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:36.100024" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:36.101272" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:36.381400" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:36.100956" elapsed="0.280616"/>
</kw>
<msg time="2026-04-28T03:07:36.381673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:36.100591" elapsed="0.281180"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:36.099094" elapsed="0.282871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:36.382598" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:36.404639" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:36.404882" level="INFO">${stdout} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:36.405025" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:36.382264" elapsed="0.022816"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:36.405435" elapsed="0.000449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:36.406998" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:36.406332" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:36.407558" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:36.407263" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:36.407216" elapsed="0.000494"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:36.408087" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:07:36.407827" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:36.407793" elapsed="0.000474"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:36.408340" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:36.416310" elapsed="0.000146"/>
</kw>
<msg time="2026-04-28T03:07:36.416500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:36.415821" elapsed="0.000741"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:36.416713" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:36.416868" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:36.409024" elapsed="0.008058"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:36.096143" elapsed="0.321038"/>
</kw>
<msg time="2026-04-28T03:07:36.417235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:36.095471" elapsed="0.321812"/>
</kw>
<msg time="2026-04-28T03:07:36.417391" level="INFO">${output} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:36.094922" elapsed="0.322494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:36.417811" level="INFO">0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:36.417565" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:36.418598" level="FAIL">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:36.418209" elapsed="0.000462">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:07:36.417923" elapsed="0.000819">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:07:36.417905" elapsed="0.000868">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:36.419000" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:36.418839" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:07:36.418824" elapsed="0.000254"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:36.419110" elapsed="0.000014"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:07:36.094401" elapsed="0.324809">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:36.419269" elapsed="0.000015"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:07:36.080595" elapsed="0.338765">'0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.438883" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:37.438571" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.438546" elapsed="0.000459"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.439314" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:37.439426" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:37.439153" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.440002" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.439601" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.440581" level="INFO">${conn_id} = 272</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.440199" elapsed="0.000408"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.441529" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:37.441605" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:37.441229" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.441779" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.443247" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:37.717847" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:37.442665" elapsed="0.275383"/>
</kw>
<msg time="2026-04-28T03:07:37.718187" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.442318" elapsed="0.275982"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:37.440817" elapsed="0.277661"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.719155" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:37.741556" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:37.741869" level="INFO">${stdout} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:37.742159" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:37.718795" elapsed="0.023423"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:37.742576" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.744123" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.743486" elapsed="0.000733"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:37.744676" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:37.744390" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.744342" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:37.745224" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:07:37.744984" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.744917" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:37.745485" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:37.751251" elapsed="0.000151"/>
</kw>
<msg time="2026-04-28T03:07:37.751447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.750671" elapsed="0.000839"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.751661" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.751814" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:37.746238" elapsed="0.005658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:37.438027" elapsed="0.313978"/>
</kw>
<msg time="2026-04-28T03:07:37.752059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.437372" elapsed="0.314735"/>
</kw>
<msg time="2026-04-28T03:07:37.752217" level="INFO">${output} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:37.436822" elapsed="0.315421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.752637" level="INFO">0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.752391" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:37.752974" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:37.752749" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.752732" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.753648" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:37.753436" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.753421" elapsed="0.000338"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:37.754014" elapsed="0.000169"/>
</return>
<msg time="2026-04-28T03:07:37.754649" level="INFO">${output} = 0b8c45ee-6e30-4ada-8365-cf55aa6c9dfa
    Manager "tcp:10.30.170.159:6640"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:07:37.436368" elapsed="0.318347"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:37.754841" elapsed="0.000063"/>
</return>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:07:37.420267" elapsed="0.334879"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:07:34.760267" elapsed="2.994998"/>
</kw>
<kw name="Get OVSDB UUID" owner="OVSDB">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.770000" level="INFO">${uuid} = </msg>
<var>${uuid}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:37.767663" elapsed="0.002365"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:37.777273" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:37.777560" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2344'} 
 body={"network-topology:topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]}]} 
 </msg>
<msg time="2026-04-28T03:07:37.777693" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>${controller_http_session}</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:37.770191" elapsed="0.007545"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.784965" level="INFO">${resp_json} = {
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
           ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:37.783898" elapsed="0.001109"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:37.781265" elapsed="0.003799"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.785299" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:37.785100" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.781236" elapsed="0.004170"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.786035" level="INFO">{
    "network-topology:topology": [
        {
            "node": [
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                    "ovsdb:bridge-name": "ovscon_br1",
                    "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                    "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                    "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                    "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                    "ovsdb:stp_enable": false,
                    "termination-point": [
                        {
                            "ovsdb:ifindex": 4,
                            "ovsdb:ingress-policing-burst": 0,
                            "ovsdb:ingress-policing-rate": 0,
                            "ovsdb:interface-type": "ovsdb:interface-type-internal",
                            "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                            "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                            "ovsdb:name": "ovscon_br1",
                            "ovsdb:ofport": 65534,
                            "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                            "tp-id": "ovscon_br1"
                        }
                    ]
                },
                {
                    "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                    "ovsdb:connection-info": {
                        "local-ip": "10.30.170.159",
                        "local-port": 6640,
                        "remote-ip": "10.30.170.161",
                        "remote-port": 32962
                    },
                    "ovsdb:datapath-type-entry": [
                        {
                            "datapath-type": "ovsdb:datapath-type-netdev"
                        },
                        {
                            "datapath-type": "ovsdb:datapath-type-system"
                        }
                    ],
                    "ovsdb:db-version": "8.3.0",
                    "ovsdb:interface-type-entry": [
                        {
                            "interface-type": "ovsdb:interface-type-vxlan"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-tap"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-stt"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-internal"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-patch"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-lisp"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-geneve"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-gre"
                        },
                        {
                            "interface-type": "ovsdb:interface-type-system"
                        }
                    ],
                    "ovsdb:managed-node-entry": [
                        {
                            "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                        }
                    ],
                    "ovsdb:manager-entry": [
                        {
                            "connected": true,
                            "number_of_connections": 1,
                            "target": "tcp:10.30.170.159:6640"
                        }
                    ],
                    "ovsdb:openvswitch-external-ids": [
                        {
                            "external-id-key": "system-id",
                            "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                        },
                        {
                            "external-id-key": "hostname",
                            "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                        },
                        {
                            "external-id-key": "rundir",
                            "external-id-value": "/var/run/openvswitch"
                        }
                    ],
                    "ovsdb:ovs-version": "2.17.11"
                }
            ],
            "topology-id": "ovsdb:1"
        }
    ]
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.785592" elapsed="0.000565"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:37.786201" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:37.778095" elapsed="0.008232"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.789321" level="INFO">${json_data} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:37.788836" elapsed="0.000514"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-28T03:07:37.789399" elapsed="0.000028"/>
</return>
<msg time="2026-04-28T03:07:37.789587" level="INFO">${resp_json} = {'network-topology:topology': [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a...</msg>
<var>${resp_json}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-28T03:07:37.786531" elapsed="0.003083"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:37.790019" level="INFO">${topologies} = [{'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c...</msg>
<var>${topologies}</var>
<arg>${resp_json}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.789777" elapsed="0.000270"/>
</kw>
<kw name="Get From List" owner="Collections">
<msg time="2026-04-28T03:07:37.790421" level="INFO">${topology} = {'topology-id': 'ovsdb:1', 'node': [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c4...</msg>
<var>${topology}</var>
<arg>${topologies}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.790197" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:37.790803" level="INFO">${node_list} = [{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/networ...</msg>
<var>${node_list}</var>
<arg>${topology}</arg>
<arg>node</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.790596" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.791274" level="INFO">[{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']", 'ovsdb:bridge-name': 'ovscon_br1', 'ovsdb:datapath-type': 'ovsdb:datapath-type-system', 'termination-point': [{'tp-id': 'ovscon_br1', 'ovsdb:port-uuid': '51203667-71a3-451c-8172-21739eec13fd', 'ovsdb:ingress-policing-burst': 0, 'ovsdb:name': 'ovscon_br1', 'ovsdb:interface-uuid': '3e6b1b62-e748-4a10-8e3f-d48aedf83ef4', 'ovsdb:ingress-policing-rate': 0, 'ovsdb:interface-type': 'ovsdb:interface-type-internal', 'ovsdb:mac-in-use': '26:42:56:a9:ca:4c', 'ovsdb:ofport': 65534, 'ovsdb:ifindex': 4}], 'ovsdb:datapath-id': '00:00:26:42:56:a9:ca:4c'}, {'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d', 'ovsdb:db-version': '8.3.0', 'ovsdb:interface-type-entry': [{'interface-type': 'ovsdb:interface-type-vxlan'}, {'interface-type': 'ovsdb:interface-type-tap'}, {'interface-type': 'ovsdb:interface-type-stt'}, {'interface-type': 'ovsdb:interface-type-internal'}, {'interface-type': 'ovsdb:interface-type-patch'}, {'interface-type': 'ovsdb:interface-type-lisp'}, {'interface-type': 'ovsdb:interface-type-geneve'}, {'interface-type': 'ovsdb:interface-type-gre'}, {'interface-type': 'ovsdb:interface-type-system'}], 'ovsdb:ovs-version': '2.17.11', 'ovsdb:connection-info': {'local-port': 6640, 'remote-port': 32962, 'local-ip': '10.30.170.159', 'remote-ip': '10.30.170.161'}, 'ovsdb:openvswitch-external-ids': [{'external-id-key': 'system-id', 'external-id-value': '3eb07ef3-5df0-4195-8cad-5c56eb67b298'}, {'external-id-key': 'hostname', 'external-id-value': 'ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d'}, {'external-id-key': 'rundir', 'external-id-value': '/var/run/openvswitch'}], 'ovsdb:datapath-type-entry': [{'datapath-type': 'ovsdb:datapath-type-netdev'}, {'datapath-type': 'ovsdb:datapath-type-system'}], 'ovsdb:manager-entry': [{'target': 'tcp:10.30.170.159:6640', 'number_of_connections': 1, 'connected': True}], 'ovsdb:managed-node-entry': [{'bridge-ref': "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]</msg>
<arg>${node_list}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.790997" elapsed="0.000339"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:37.791864" level="INFO">${node_id} = ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_id}</var>
<arg>${node}</arg>
<arg>node-id</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.791690" elapsed="0.000200"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:37.794003" level="INFO">${node_uuid} = 9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1</msg>
<var>${node_uuid}</var>
<arg>${node_id}</arg>
<arg>ovsdb://uuid/</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.792057" elapsed="0.001972"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:37.794726" level="FAIL">Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:07:37.794537" elapsed="0.000296">Dictionary does not contain key 'ovsdb:connection-info'.</status>
</kw>
<msg time="2026-04-28T03:07:37.794954" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:07:37.795005" level="INFO">${connection_info} = Dictionary does not contain key 'ovsdb:connection-info'.</msg>
<var>${status}</var>
<var>${connection_info}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${node}</arg>
<arg>ovsdb:connection-info</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:37.794198" elapsed="0.000830"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:37.795700" level="FAIL">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-28T03:07:37.795520" elapsed="0.000508">ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</status>
</kw>
<msg time="2026-04-28T03:07:37.796169" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-28T03:07:37.796213" level="INFO">${remote_ip} = ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.</msg>
<var>${status}</var>
<var>${remote_ip}</var>
<arg>Collections.Get From Dictionary</arg>
<arg>${connection_info}</arg>
<arg>remote-ip</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:37.795186" elapsed="0.001050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.796791" level="FAIL">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<var>${uuid}</var>
<arg>'${remote_ip}' == '${ovs_system_ip}'</arg>
<arg>${node_uuid}</arg>
<arg>${uuid}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="FAIL" start="2026-04-28T03:07:37.796420" elapsed="0.000463">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<var name="${node}">{'node-id': 'ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1', 'ovsdb:stp_enable': False, 'ovsdb:bridge-uuid': 'a9564225-fdb1-4cca-93c9-93fed5c44d60', 'ovsdb:managed-by': "/network...</var>
<status status="FAIL" start="2026-04-28T03:07:37.791564" elapsed="0.005412">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</iter>
<var>${node}</var>
<value>@{node_list}</value>
<status status="FAIL" start="2026-04-28T03:07:37.791390" elapsed="0.005651">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</for>
<return>
<value>${uuid}</value>
<status status="NOT RUN" start="2026-04-28T03:07:37.797096" elapsed="0.000016"/>
</return>
<var>${OVSDB_UUID2}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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,  will be returned.</doc>
<status status="FAIL" start="2026-04-28T03:07:37.767164" elapsed="0.030030">Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${OVSDB_UUID2}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.797370" elapsed="0.000022"/>
</kw>
<kw name="Add Bridge To Ovsdb Node" owner="OVSDB">
<arg>uuid/${OVSDB_UUID2}</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${BRIDGE}</arg>
<arg>0000000000008280</arg>
<doc>This will create a bridge and add it to the OVSDB node.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.797652" elapsed="0.000023"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<arg>uuid/${OVSDB_UUID2}</arg>
<arg>${BRIDGE}</arg>
<arg>port1</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsbug_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.804699" elapsed="0.000027"/>
</kw>
<kw name="Add Termination Point" owner="OVSDB">
<arg>uuid/${OVSDB_UUID2}</arg>
<arg>${BRIDGE}</arg>
<arg>port2</arg>
<doc>Using the json data body file as a template, a REST config request is made to
create a termination-point ${tp_name} on ovsbug_br for the given ${node_id}. The ports
remote-ip defaults to 10.30.170.161</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.811603" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${config_store_elements}</var>
<arg>${BRIDGE}</arg>
<arg>port1</arg>
<arg>port2</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.811781" elapsed="0.000021"/>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${config_store_elements}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.818677" elapsed="0.000027"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<var>${ovs_output}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl show</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.818903" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${ovs_output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.819091" elapsed="0.000020"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<var>${ovs_output}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.819291" elapsed="0.000023"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<var>${ovs_output}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-port ${BRIDGE} port2</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.819499" elapsed="0.000022"/>
</kw>
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<arg>show</arg>
<arg>Port "port2"</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>False</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.826987" elapsed="0.000026"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.827208" elapsed="0.000023"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.827380" elapsed="0.000020"/>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<arg>${RFC8040_CONFIG_TOPO_API}</arg>
<arg>${config_store_elements}</arg>
<arg>pretty_print_json=True</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.834078" elapsed="0.000026"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5s</arg>
<arg>1s</arg>
<arg>Verify Ovs-vsctl Output</arg>
<arg>show</arg>
<arg>Port "port2"</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.834303" elapsed="0.000021"/>
</kw>
<kw name="Run Keywords" owner="BuiltIn" type="TEARDOWN">
<kw name="Test Teardown">
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:37.841552" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:37.841668" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:37.841794" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:37.835780" elapsed="0.006039"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.846739" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:37.846176" elapsed="0.000591"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:37.844288" elapsed="0.002518"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.846988" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:37.846832" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.844269" elapsed="0.002795"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.847448" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.847200" elapsed="0.000301"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:37.847542" elapsed="0.000028"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:37.842112" elapsed="0.005552"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:37.854388" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:37.854642" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:37.854844" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:37.847803" elapsed="0.007078"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.862394" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:37.861327" elapsed="0.001108"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:37.858680" elapsed="0.003810"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.862726" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:37.862526" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.858654" elapsed="0.004177"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.863385" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.863038" elapsed="0.000465"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:37.863562" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:37.855277" elapsed="0.008455"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:37.835499" elapsed="0.028301"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:37.867674" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:37.867413" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:37.867395" elapsed="0.000357"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.868055" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:37.868156" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:37.867889" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.868703" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:37.868328" elapsed="0.000421"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.869290" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:37.868895" elapsed="0.000421"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:37.870317" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:37.870394" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:37.869965" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.870568" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:37.872446" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:38.157723" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:37.871492" elapsed="0.286413"/>
</kw>
<msg time="2026-04-28T03:07:38.158235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.871136" elapsed="0.287178"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:37.869523" elapsed="0.288890"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:38.158792" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:39.286709" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:39.287164" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:39.287308" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:38.158590" elapsed="1.128806"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:39.287870" elapsed="0.000640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.289618" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:39.288912" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:39.290258" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:39.289921" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.289867" elapsed="0.000553"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:39.290776" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:07:39.290539" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.290505" elapsed="0.000498"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:39.291086" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:39.296827" elapsed="0.000421"/>
</kw>
<msg time="2026-04-28T03:07:39.297481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.295932" elapsed="0.001650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.297799" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.298053" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:39.291776" elapsed="0.006394"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:37.866850" elapsed="1.431448"/>
</kw>
<msg time="2026-04-28T03:07:39.298374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:37.866276" elapsed="1.432185"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:37.865561" elapsed="1.433010"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.301677" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:39.301308" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.301281" elapsed="0.000507"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.302210" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:39.302353" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:39.302023" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.303203" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:39.302588" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.304057" level="INFO">${conn_id} = 274</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:39.303485" elapsed="0.000610"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.305629" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:39.305741" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:39.305159" elapsed="0.000624"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.306050" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.308377" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:39.592399" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:39.307017" elapsed="0.285620"/>
</kw>
<msg time="2026-04-28T03:07:39.592980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.306619" elapsed="0.286467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:39.304444" elapsed="0.288775"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.593705" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:39.636480" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:39.636859" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:39.637019" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:39.593453" elapsed="0.043629"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:39.637685" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.639488" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:39.638702" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:39.640150" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:39.639777" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.639724" elapsed="0.000599"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:39.640703" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-28T03:07:39.640451" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.640414" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:39.641115" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:39.646448" elapsed="0.000332"/>
</kw>
<msg time="2026-04-28T03:07:39.647017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.645461" elapsed="0.001657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.647332" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.647548" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:39.641851" elapsed="0.005812"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:39.300464" elapsed="0.347321"/>
</kw>
<msg time="2026-04-28T03:07:39.647857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.299665" elapsed="0.348294"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:39.298871" elapsed="0.349200"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:37.865051" elapsed="1.783099"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.651345" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:39.650927" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.650899" elapsed="0.000557"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.651833" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:39.652030" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:39.651649" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.652813" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:39.652272" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.653746" level="INFO">${conn_id} = 275</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:39.653200" elapsed="0.000581"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.655109" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:39.655187" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:39.654571" elapsed="0.000640"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.655363" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.656927" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:39.951091" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:39.656217" elapsed="0.295205"/>
</kw>
<msg time="2026-04-28T03:07:39.951530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.655846" elapsed="0.295819"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:39.654122" elapsed="0.297724"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.952545" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:39.975188" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:39.975438" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:39.975534" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:39.952186" elapsed="0.023398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:39.975977" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.977646" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:39.976926" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:39.978255" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:39.977921" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.977866" elapsed="0.000553"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:39.978766" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:07:39.978534" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.978502" elapsed="0.000478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:39.979058" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:39.984425" elapsed="0.000351"/>
</kw>
<msg time="2026-04-28T03:07:39.984837" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.983641" elapsed="0.001283"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.985166" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.985378" elapsed="0.000036"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:39.979735" elapsed="0.005762"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:39.650083" elapsed="0.335541"/>
</kw>
<msg time="2026-04-28T03:07:39.985695" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.649242" elapsed="0.336535"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:39.648410" elapsed="0.337474"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:39.988868" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:39.988487" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:39.988462" elapsed="0.000536"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.989373" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:39.989513" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:39.989191" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.990289" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:39.989743" elapsed="0.000609"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.991381" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:39.990553" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:39.992828" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:39.992980" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:39.992406" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.993204" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:39.994676" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:40.301508" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:39.994040" elapsed="0.307616"/>
</kw>
<msg time="2026-04-28T03:07:40.301739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.993679" elapsed="0.308155"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:39.991710" elapsed="0.310278"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.302480" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:40.365730" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:40.366143" level="INFO">${stdout} =  * Exiting ovs-vswitchd (11185)
 * Exiting ovsdb-server (11162)</msg>
<msg time="2026-04-28T03:07:40.366253" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:40.302225" elapsed="0.064086"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:40.366774" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:40.369283" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:40.368109" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:40.369926" elapsed="0.000086"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:40.369621" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:40.369568" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:40.370728" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-28T03:07:40.370362" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:40.370309" elapsed="0.000800"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:40.371233" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:40.379198" elapsed="0.000275"/>
</kw>
<msg time="2026-04-28T03:07:40.379539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.378508" elapsed="0.001113"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:40.379776" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:40.379986" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:40.372361" elapsed="0.007742"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:39.987703" elapsed="0.392524"/>
</kw>
<msg time="2026-04-28T03:07:40.380296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:39.986908" elapsed="0.393461"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:39.986179" elapsed="0.394291"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:40.383642" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:40.382982" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:40.382956" elapsed="0.000774"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.384068" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:40.384250" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:40.383895" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:40.384850" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:40.384428" elapsed="0.000470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.385465" level="INFO">${conn_id} = 277</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:40.385076" elapsed="0.000416"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:40.386449" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:40.386528" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:40.386151" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.386706" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.388276" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:40.663484" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:40.387571" elapsed="0.276103"/>
</kw>
<msg time="2026-04-28T03:07:40.663787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.387223" elapsed="0.276707"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:40.385703" elapsed="0.278456"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.664893" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:40.688022" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:40.688212" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:40.688274" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:40.664534" elapsed="0.023773"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:40.688650" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:40.690097" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:40.689487" elapsed="0.000704"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:40.690650" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:40.690373" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:40.690316" elapsed="0.000491"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:40.691158" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-28T03:07:40.690922" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:40.690889" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:40.691396" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:40.696778" elapsed="0.000372"/>
</kw>
<msg time="2026-04-28T03:07:40.697214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.695970" elapsed="0.001335"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:40.697517" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:40.697732" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:40.692039" elapsed="0.005806"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:40.382312" elapsed="0.315682"/>
</kw>
<msg time="2026-04-28T03:07:40.698070" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.381543" elapsed="0.316613"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:40.380789" elapsed="0.317544"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:40.701421" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:40.700980" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:40.700952" elapsed="0.000582"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.701910" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:40.702087" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:40.701730" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:40.702859" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:40.702327" elapsed="0.000598"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.703674" level="INFO">${conn_id} = 278</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:40.703155" elapsed="0.000556"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:40.705046" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:40.705154" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:40.704643" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.705393" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:40.707496" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:41.011498" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:40.706575" elapsed="0.305078"/>
</kw>
<msg time="2026-04-28T03:07:41.011740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.706092" elapsed="0.305750"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:40.704024" elapsed="0.307964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:41.012777" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:41.126157" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:41.126386" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:41.126433" level="INFO">${stderr} = 2026-04-28T03:07:41Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:41Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:41Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:41.012259" elapsed="0.114200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:41.126718" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:41.127604" level="INFO">2026-04-28T03:07:41Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:41Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:41Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:41.127280" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:41.127896" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:41.127742" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:41.127715" elapsed="0.000274"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:41.128180" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-28T03:07:41.128043" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:41.128028" elapsed="0.000248"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:41.128311" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:41.131712" elapsed="0.000276"/>
</kw>
<msg time="2026-04-28T03:07:41.132035" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:41.131143" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:41.132268" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:41.132425" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:41.128646" elapsed="0.003863"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:40.700156" elapsed="0.432445"/>
</kw>
<msg time="2026-04-28T03:07:41.132656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:40.699361" elapsed="0.433354"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:40.698605" elapsed="0.434188"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:37.864480" elapsed="3.268369"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:41.135859" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:41.135577" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:41.135558" elapsed="0.000395"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:41.136261" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:41.136364" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:41.136096" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:41.136920" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:41.136539" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:41.137520" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:41.137137" elapsed="0.000408"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:41.138518" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:41.138596" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:41.138187" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:41.138769" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:41.140816" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:41.679219" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:41.139704" elapsed="0.539747"/>
</kw>
<msg time="2026-04-28T03:07:41.679864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:41.139356" elapsed="0.540679"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:41.137753" elapsed="0.542417"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:41.680676" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:42.827136" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:42.827688" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:42.827791" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:41.680414" elapsed="1.147434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:42.828384" elapsed="0.000601"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:42.830068" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:42.829415" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:42.830649" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:42.830362" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:42.830313" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:42.831190" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-28T03:07:42.830919" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:42.830885" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:42.831478" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:42.837649" elapsed="0.000276"/>
</kw>
<msg time="2026-04-28T03:07:42.838166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:42.836892" elapsed="0.001372"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:42.838480" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:42.838698" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:42.832192" elapsed="0.006620"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:41.135010" elapsed="1.703951"/>
</kw>
<msg time="2026-04-28T03:07:42.839038" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:41.134433" elapsed="1.704689"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:41.133894" elapsed="1.705354"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:42.842215" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:42.841832" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:42.841807" elapsed="0.000517"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:42.842699" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:42.842840" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:42.842517" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:42.843648" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:42.843111" elapsed="0.000604"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:42.844468" level="INFO">${conn_id} = 280</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:42.843920" elapsed="0.000584"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:42.845955" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:42.846067" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:42.845495" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:42.846316" elapsed="0.039484"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:42.887674" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:43.182178" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:42.886497" elapsed="0.295954"/>
</kw>
<msg time="2026-04-28T03:07:43.182803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:42.886075" elapsed="0.296843"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:42.844864" elapsed="0.338834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.184222" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:43.217093" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:43.217345" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:43.217442" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:43.183955" elapsed="0.033537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:43.217852" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:43.219332" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:43.218616" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:43.219898" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:43.219605" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:43.219552" elapsed="0.000540"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:43.220452" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-28T03:07:43.220213" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:43.220179" elapsed="0.000458"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:43.220710" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:43.228538" elapsed="0.000215"/>
</kw>
<msg time="2026-04-28T03:07:43.228928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.227461" elapsed="0.001563"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:43.229195" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:43.229355" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:43.221419" elapsed="0.008021"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:42.841065" elapsed="0.388471"/>
</kw>
<msg time="2026-04-28T03:07:43.229591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:42.840272" elapsed="0.389383"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:42.839525" elapsed="0.390212"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:41.133511" elapsed="2.096282"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:43.232010" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:43.231708" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:43.231689" elapsed="0.000404"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.232490" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:43.232596" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:43.232353" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:43.233191" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:43.232770" elapsed="0.000468"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.233773" level="INFO">${conn_id} = 281</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:43.233391" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:43.234747" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:43.234824" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:43.234463" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.235014" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.236615" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:43.522726" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:43.235899" elapsed="0.287026"/>
</kw>
<msg time="2026-04-28T03:07:43.523174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.235515" elapsed="0.287788"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:43.234042" elapsed="0.289435"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.524230" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:43.547415" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:43.547671" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:43.547765" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:43.523816" elapsed="0.024000"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:43.548227" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:43.549762" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:43.549132" elapsed="0.000722"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:43.550360" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:43.550058" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:43.550004" elapsed="0.000531"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:43.550883" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-28T03:07:43.550652" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:43.550618" elapsed="0.000538"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:43.551234" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:43.558273" elapsed="0.000500"/>
</kw>
<msg time="2026-04-28T03:07:43.558872" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.557225" elapsed="0.001869"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:43.559437" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:43.559778" elapsed="0.000045"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:43.551905" elapsed="0.008103"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:43.231125" elapsed="0.329066"/>
</kw>
<msg time="2026-04-28T03:07:43.560306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.230531" elapsed="0.329837"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:43.230011" elapsed="0.330437"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:43.562605" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:43.562329" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:43.562310" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.562972" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:43.563102" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:43.562824" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:43.563662" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:43.563275" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.564291" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:43.563868" elapsed="0.000450"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:43.565256" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:43.565332" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:43.564967" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.565503" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.567101" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:43.831676" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:43.566344" elapsed="0.265507"/>
</kw>
<msg time="2026-04-28T03:07:43.831980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.565991" elapsed="0.266115"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:43.564541" elapsed="0.267737"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:43.832892" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:44.078113" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:44.078593" level="INFO">${stdout} =  * Exiting ovs-vswitchd (5991)
 * Exiting ovsdb-server (5969)</msg>
<msg time="2026-04-28T03:07:44.078784" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:43.832580" elapsed="0.246293"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:44.079554" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.082023" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.081061" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.082700" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.082395" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.082341" elapsed="0.000554"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:44.083333" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-28T03:07:44.083054" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.083017" elapsed="0.000522"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.083620" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:44.088549" elapsed="0.000270"/>
</kw>
<msg time="2026-04-28T03:07:44.088865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.088065" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.089181" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.089340" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:44.084386" elapsed="0.005038"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:43.561758" elapsed="0.527758"/>
</kw>
<msg time="2026-04-28T03:07:44.089572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:43.561188" elapsed="0.528444"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:43.560638" elapsed="0.529076"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.091891" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:44.091616" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.091596" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.092267" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:44.092370" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:44.092130" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.092917" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.092539" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.093508" level="INFO">${conn_id} = 283</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:44.093129" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.094455" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:44.094532" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:44.094178" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.094702" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.096280" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:44.368149" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:44.095557" elapsed="0.272795"/>
</kw>
<msg time="2026-04-28T03:07:44.368464" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.095209" elapsed="0.273386"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:44.093742" elapsed="0.275033"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.369400" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:44.381500" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:44.381655" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:44.381715" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:44.369089" elapsed="0.012659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:44.381995" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.383099" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.382548" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.383596" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.383404" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.383371" elapsed="0.000325"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:44.383915" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:07:44.383770" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.383749" elapsed="0.000303"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.384098" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:44.388532" elapsed="0.000323"/>
</kw>
<msg time="2026-04-28T03:07:44.388917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.387857" elapsed="0.001334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.389412" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.389629" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:44.384519" elapsed="0.005224"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:44.091055" elapsed="0.298815"/>
</kw>
<msg time="2026-04-28T03:07:44.389963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.090451" elapsed="0.299597"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:44.089909" elapsed="0.300248"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.393141" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:44.392752" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.392726" elapsed="0.000526"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.393629" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:44.393769" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:44.393449" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.394563" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.394027" elapsed="0.000617"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.395393" level="INFO">${conn_id} = 284</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:44.394848" elapsed="0.000581"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.396691" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:44.396796" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:44.396312" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.397055" elapsed="0.000710"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.399397" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:44.665770" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:44.398510" elapsed="0.267499"/>
</kw>
<msg time="2026-04-28T03:07:44.666151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.398012" elapsed="0.268415"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:44.395718" elapsed="0.270992"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.667596" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:44.760562" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:44.760764" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:44.760809" level="INFO">${stderr} = 2026-04-28T03:07:44Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:44Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:44Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:44.667153" elapsed="0.093682"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:44.761094" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.761884" level="INFO">2026-04-28T03:07:44Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:44Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:44Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.761555" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.762211" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.762056" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.762028" elapsed="0.000265"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:44.762485" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-28T03:07:44.762347" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.762332" elapsed="0.000274"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.762653" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:44.766286" elapsed="0.000292"/>
</kw>
<msg time="2026-04-28T03:07:44.766633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.765649" elapsed="0.001077"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.766899" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.767082" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:44.763019" elapsed="0.004148"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:44.391984" elapsed="0.375279"/>
</kw>
<msg time="2026-04-28T03:07:44.767318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.391180" elapsed="0.376198"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:44.390425" elapsed="0.377031"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:41.133094" elapsed="3.634418"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:37.863983" elapsed="6.903583"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.768892" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:44.768402" elapsed="0.000527"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:07:44.769270" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.769064" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.769037" elapsed="0.000324"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:07:44.769606" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.771277" level="FAIL">'['8280', 'southbound']' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:44.770746" elapsed="0.000630">'['8280', 'southbound']' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:07:44.771502" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:07:44.770171" elapsed="0.001366"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.772345" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:44.771844" elapsed="0.000539"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.773040" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:44.772607" elapsed="0.000475"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.774119" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:44.773316" elapsed="0.000845"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.774977" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']

Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:07:44.774394" elapsed="0.000656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.775644" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.775273" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.776639" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:07:44.776192" elapsed="0.000498"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:44.775824" elapsed="0.000903"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.775795" elapsed="0.000958"/>
</if>
<arg>${TEST_TAGS}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:07:44.767895" elapsed="0.008909"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:37.835151" elapsed="6.941726"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:44.783273" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:44.783449" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '315'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid//bridge/ovsbug_br']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:44.777053" elapsed="0.006497"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:44.788555" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:44.788685" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '298'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:44.783735" elapsed="0.005042"/>
</kw>
<arg>Test Teardown</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<arg>AND</arg>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}</arg>
<arg>expected_status=anything</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-28T03:07:37.834589" elapsed="6.954272"/>
</kw>
<doc>Any config created for a bridge (e.g. added ports) should be reconciled when a bridge is
reconnected. This test case will create two ports via REST and validate that the bridge has those
ports. At that point, the bridge will be disconnected from the controller and the 2nd created port
will be manually removed. The bridge will be reconnected and the 2nd port should be re-added to the
bridge. If not, then bug 8280 will be found and the test case will fail</doc>
<tag>8280</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:07:34.359906" elapsed="10.429087">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']

Evaluating expression "'ValueError: Argument 'dictionary' got value 'Dictionary does not contain key 'ovsdb:connection-info'.' that cannot be converted to Mapping: Invalid expression.' == '10.30.170.161'" failed: SyntaxError: invalid syntax (&lt;string&gt;, line 1)</status>
</test>
<test id="s1-s6-t7" name="Bug 7160" line="242">
<kw name="Test Setup" type="SETUP">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-28T03:07:44.798706" elapsed="0.000614"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-28T03:07:44.797892" elapsed="0.001489"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.800539" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.800398" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.800373" elapsed="0.000242"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.806026" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.805854" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.805829" elapsed="0.000282"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.807351" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:44.806855" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.807954" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-28T03:07:44.807575" elapsed="0.000408"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-28T03:07:44.808028" elapsed="0.000039"/>
</return>
<msg time="2026-04-28T03:07:44.808196" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-28T03:07:44.806360" elapsed="0.001860"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.814237" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.814097" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.814077" elapsed="0.000242"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.815786" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:44.815610" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.815587" elapsed="0.000385"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-28T03:07:44.816648" level="INFO">${karaf_connection_index} = 184</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-28T03:07:44.816140" elapsed="0.000540"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.817207" level="INFO">${current_connection_index} = 137</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:44.816896" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.850573" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "p "s "t "r "e "a "m "- "s "o "[78Cu "[A[78Ct</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-28T03:07:44.818870" elapsed="0.032002"/>
</kw>
<msg time="2026-04-28T03:07:44.851200" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-28T03:07:44.851272" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "o "v "s "d "b "- "u "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:44.817454" elapsed="0.033871"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.885017" level="INFO">"h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "1 "6 "0 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-28T03:07:44.853613" elapsed="0.031586"/>
</kw>
<msg time="2026-04-28T03:07:44.885378" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-28T03:07:44.885424" level="INFO">${message_wait} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "1 "6 "0 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:44.851711" elapsed="0.033750"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.885980" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:44.885617" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.885588" elapsed="0.000589"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.886965" level="INFO"> "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "1 "6 "0 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.886322" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.887431" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:44.887153" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.887135" elapsed="0.000553"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-28T03:07:44.887726" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:44.890433" elapsed="0.000177"/>
</kw>
<msg time="2026-04-28T03:07:44.890655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.889773" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.890947" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.891158" elapsed="0.000022"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:44.888889" elapsed="0.002416"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-28T03:07:44.888048" elapsed="0.003348"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-28T03:07:44.815187" elapsed="0.076308"/>
</kw>
<msg time="2026-04-28T03:07:44.891590" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:44.891634" level="INFO">${message} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "1 "6 "0 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:44.814496" elapsed="0.077178"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-28T03:07:44.891882" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-28T03:07:44.891753" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.891734" elapsed="0.000280"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.892463" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.892831" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-28T03:07:44.892905" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-28T03:07:44.813721" elapsed="0.079335"/>
</kw>
<msg time="2026-04-28T03:07:44.893151" level="INFO">${status} = PASS</msg>
<msg time="2026-04-28T03:07:44.893195" level="INFO">${output} =  "h "b "o "u "n "d ". "t "x "t ". "B "u "g "[C "V "a "l "i "d "a "t "i "o "n ". "B "u "g "[C "7 "1 "6 "0 "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:44.808652" elapsed="0.084584"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.893565" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:44.893317" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.893300" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-28T03:07:44.808475" elapsed="0.085191"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-28T03:07:44.808286" elapsed="0.085413"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-28T03:07:44.805186" elapsed="0.088569"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-28T03:07:44.800041" elapsed="0.093772"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-28T03:07:44.799554" elapsed="0.094305"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-28T03:07:44.792750" elapsed="0.101163"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:44.791830" elapsed="0.102148"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:44.896340" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:44.896065" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:44.896047" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.896707" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:44.896858" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:44.896558" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.897437" level="INFO">Attempting to execute command "sudo ovs-vsctl set-manager ptcp:6634" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:44.897058" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.898063" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:44.897629" elapsed="0.000460"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:44.899061" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:44.899141" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:44.898715" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.899316" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:44.900518" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:45.204893" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:44.900203" elapsed="0.304867"/>
</kw>
<msg time="2026-04-28T03:07:45.205174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.899794" elapsed="0.305490"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:44.898300" elapsed="0.307162"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:45.206099" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6634'.</msg>
<msg time="2026-04-28T03:07:45.228567" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:45.228871" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:45.229099" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:45.205766" elapsed="0.023414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:45.229589" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.230686" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.230327" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:45.231031" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:45.230838" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:45.230802" elapsed="0.000319"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:45.231287" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-28T03:07:45.231176" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:45.231161" elapsed="0.000213"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:45.231410" elapsed="0.000013"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:45.235107" elapsed="0.000156"/>
</kw>
<msg time="2026-04-28T03:07:45.235310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:45.234503" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.235530" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.235684" elapsed="0.000032"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:45.231737" elapsed="0.004065"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:44.895306" elapsed="0.340612"/>
</kw>
<msg time="2026-04-28T03:07:45.236021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:44.894741" elapsed="0.341345"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl set-manager ptcp:${OVSDB_NODE_PORT}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:44.894179" elapsed="0.342089"/>
</kw>
<kw name="Connect To Ovsdb Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:07:45.237285" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/connect.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:07:45.237521" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://127.0.0.1:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                  "o...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/connect.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:07:45.237074" elapsed="0.000482"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:45.238016" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:61644",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 61644,
                ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:45.237715" elapsed="0.000347"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:45.238608" level="INFO">${body} = {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:45.238264" elapsed="0.000383"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.239373" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:45.238874" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.239801" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.239549" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.240285" level="INFO">data: {
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.240008" elapsed="0.000327"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:45.250976" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '269', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "network-topology:node": [
        {
              "node-id": "ovsdb://10.30.170.161:6634",
              "ovsdb:connection-info": {
                  "ovsdb:remote-port": 6634,
                  "ovsdb:remote-ip": "10.30.170.161"
              }
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:07:45.251080" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:45.251280" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:45.240484" elapsed="0.010849"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.258360" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:45.255352" elapsed="0.003131"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.262217" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:45.258797" elapsed="0.003470"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:45.258536" elapsed="0.003788"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:45.255316" elapsed="0.007039"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.263030" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.262615" elapsed="0.000478"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:45.263159" elapsed="0.000051"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:45.251816" elapsed="0.011565"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:45.263617" elapsed="0.003895"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>This will Initiate the connection to OVSDB node from controller</doc>
<status status="PASS" start="2026-04-28T03:07:45.236609" elapsed="0.030967"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.279046" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:45.278743" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:45.278723" elapsed="0.000488"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:45.279504" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:45.279620" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:45.279356" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.280184" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.279791" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:45.280769" level="INFO">${conn_id} = 286</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:45.280390" elapsed="0.000405"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.281681" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:45.281756" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:45.281417" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:45.281954" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:45.283134" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:45.547273" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:45.282804" elapsed="0.264642"/>
</kw>
<msg time="2026-04-28T03:07:45.547549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:45.282458" elapsed="0.265193"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:45.281021" elapsed="0.266801"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:45.548457" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:45.600850" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:45.601149" level="INFO">${stdout} = 3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:45.601249" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:45.548144" elapsed="0.053156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:45.601661" elapsed="0.000542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.603281" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.602615" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:45.603841" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:45.603549" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:45.603498" elapsed="0.000537"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:45.604391" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-28T03:07:45.604152" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:45.604119" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:45.604642" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:45.611378" elapsed="0.000211"/>
</kw>
<msg time="2026-04-28T03:07:45.611650" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:45.610603" elapsed="0.001132"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.611968" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.612188" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:45.605344" elapsed="0.006957"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:45.278204" elapsed="0.334222"/>
</kw>
<msg time="2026-04-28T03:07:45.612568" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:45.277624" elapsed="0.335011"/>
</kw>
<msg time="2026-04-28T03:07:45.612786" level="INFO">${output} = 3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:45.277102" elapsed="0.335718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.613403" level="INFO">3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:45.613050" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:45.614420" level="FAIL">'3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</msg>
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:45.613857" elapsed="0.000659">'3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<status status="FAIL" start="2026-04-28T03:07:45.613559" elapsed="0.001053">'3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</branch>
<status status="FAIL" start="2026-04-28T03:07:45.613535" elapsed="0.001123">'3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:45.614968" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:45.614752" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-28T03:07:45.614729" elapsed="0.000353"/>
</if>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:45.615128" elapsed="0.000021"/>
</return>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="FAIL" start="2026-04-28T03:07:45.276620" elapsed="0.338651">'3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-28T03:07:45.615355" elapsed="0.000021"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="FAIL" start="2026-04-28T03:07:45.268299" elapsed="0.347185">'3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
    ovs_version: "2.17.11"' does not contain 'is_connected'</status>
</kw>
<kw name="Verify OVS Reports Connected" owner="OVSDB">
<kw name="Verify Ovs-vsctl Output" owner="OVSDB">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:46.634424" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:46.634122" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:46.634099" elapsed="0.000419"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:46.634815" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:46.634927" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:46.634661" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.635501" level="INFO">Attempting to execute command "sudo ovs-vsctl show" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:46.635116" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:46.636090" level="INFO">${conn_id} = 287</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:46.635696" elapsed="0.000420"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.637003" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:46.637081" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:46.636715" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:46.637254" elapsed="0.001982"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:46.640099" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:46.916274" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:46.639764" elapsed="0.276611"/>
</kw>
<msg time="2026-04-28T03:07:46.916524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:46.639404" elapsed="0.277205"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:46.636330" elapsed="0.280414"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:46.917234" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-04-28T03:07:46.980339" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:46.980578" level="INFO">${stdout} = 3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<msg time="2026-04-28T03:07:46.980676" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:46.916990" elapsed="0.063736"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:46.981114" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.982582" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:46.982010" elapsed="0.000666"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:46.983129" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:46.982834" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:46.982789" elapsed="0.000493"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:46.983627" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-28T03:07:46.983396" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:46.983363" elapsed="0.000444"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:46.983880" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:46.989115" elapsed="0.000203"/>
</kw>
<msg time="2026-04-28T03:07:46.989419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:46.988456" elapsed="0.001053"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:46.989723" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:46.989957" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:46.984564" elapsed="0.005508"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:46.633568" elapsed="0.356627"/>
</kw>
<msg time="2026-04-28T03:07:46.990267" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:46.632954" elapsed="0.357376"/>
</kw>
<msg time="2026-04-28T03:07:46.990477" level="INFO">${output} = 3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>${ovs_system}</arg>
<arg>sudo ovs-vsctl ${vsctl_args}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:46.632418" elapsed="0.358093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.991082" level="INFO">3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:46.990713" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;True&quot;">
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:46.991524" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:46.991234" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:46.991210" elapsed="0.000876"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_match}&quot; == &quot;False&quot;">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${expected_output}</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:46.992452" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:46.992163" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:46.992141" elapsed="0.000419"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:46.992604" elapsed="0.000038"/>
</return>
<msg time="2026-04-28T03:07:46.992807" level="INFO">${output} = 3380421e-af84-4ffd-b2bc-3ed25878afea
    Manager "ptcp:6634"
        is_connected: true
    ovs_version: "2.17.11"</msg>
<var>${output}</var>
<arg>show</arg>
<arg>is_connected</arg>
<arg>${tools_system}</arg>
<doc>A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
way to check this output in a WUKS. The argument ${should_match} can control if the match should
exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default</doc>
<status status="PASS" start="2026-04-28T03:07:46.631961" elapsed="0.360881"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-28T03:07:46.992909" elapsed="0.000056"/>
</return>
<doc>Uses "vsctl show" to check for string "is_connected"</doc>
<status status="PASS" start="2026-04-28T03:07:46.616398" elapsed="0.376748"/>
</kw>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Verify OVS Reports Connected</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-28T03:07:45.267750" elapsed="1.725460"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.993807" level="INFO">${qos} = QOS-1</msg>
<var>${qos}</var>
<arg>QOS-1</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:46.993445" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.994418" level="INFO">${queue} = QUEUE-1</msg>
<var>${queue}</var>
<arg>QUEUE-1</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:46.994067" elapsed="0.000385"/>
</kw>
<kw name="Create OVSDB Node" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:07:46.995516" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_node.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_node.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:07:46.995693" level="INFO">${body} = {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "127.0.0.1",
                "ovsdb:remote-port": "61644"
    ...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_node.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:07:46.995307" elapsed="0.000422"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:46.996312" level="INFO">${body} = {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "61644"
...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>127.0.0.1</arg>
<arg>${node_ip}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:46.995979" elapsed="0.000369"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:46.996915" level="INFO">${body} = {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "6634"
 ...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>61644</arg>
<arg>${port}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:46.996596" elapsed="0.000376"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.997670" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1</msg>
<var>${uri}</var>
<arg>${RFC8040_TOPO_OVSDB1_API}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:46.997185" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.998535" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:46.997909" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:46.998994" level="INFO">data: {
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "6634"
            }
        }
    ]
}


</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:46.998733" elapsed="0.000308"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.010294" level="INFO">POST Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '233', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:connection-info": {
                "ovsdb:remote-ip": "10.30.170.161",
                "ovsdb:remote-port": "6634"
            }
        }
    ]
}


 
 </msg>
<msg time="2026-04-28T03:07:47.010365" level="INFO">POST Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.010506" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:46.999186" elapsed="0.011356"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.016574" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.013955" elapsed="0.002706"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.019655" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:47.016931" elapsed="0.002761"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.016695" elapsed="0.003048"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.013909" elapsed="0.005866"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.020352" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.019999" elapsed="0.000410"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.020468" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.010923" elapsed="0.009722"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:47.020841" elapsed="0.003201"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<status status="PASS" start="2026-04-28T03:07:46.994777" elapsed="0.029352"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.030749" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.031372" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '727'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.031471" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.024780" elapsed="0.006716"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.036561" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.035891" elapsed="0.000699"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.034027" elapsed="0.002603"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.036798" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.036656" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.034007" elapsed="0.002868"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.037273" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.037025" elapsed="0.000309"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.037411" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.031792" elapsed="0.005746"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.042971" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.043230" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.043432" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.037681" elapsed="0.005788"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.051005" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.049903" elapsed="0.001144"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.047215" elapsed="0.003888"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.051337" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.051138" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.047189" elapsed="0.004255"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.051996" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.051629" elapsed="0.000486"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.052175" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.043842" elapsed="0.008505"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.024416" elapsed="0.028000"/>
</kw>
<kw name="Create Qos" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:07:47.053403" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qos.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/create_qos.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:07:47.053616" level="INFO">${body} = {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/create_qos.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:07:47.053181" elapsed="0.000473"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.054440" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1</msg>
<var>${uri}</var>
<arg>${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:47.053860" elapsed="0.000617"/>
</kw>
<kw name="Replace String" owner="String">
<msg time="2026-04-28T03:07:47.055063" level="INFO">${body} = {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other...</msg>
<var>${body}</var>
<arg>${body}</arg>
<arg>QOS-1</arg>
<arg>${qos}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-28T03:07:47.054712" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.055655" level="INFO">URI is /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1</msg>
<arg>URI is ${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.055312" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.056278" level="INFO">data: {
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ]
    }
  ]
}
</msg>
<arg>data: ${body}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.055915" elapsed="0.000426"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.068135" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '256', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "ovsdb:qos-entries": [
    {
      "qos-id": "QOS-1",
      "qos-type": "ovsdb:qos-type-linux-htb",
      "qos-other-config": [
        {
          "other-config-key": "max-rate",
          "other-config-value": "3300000"
        }
      ]
    }
  ]
}
 
 </msg>
<msg time="2026-04-28T03:07:47.068183" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.068268" level="INFO">${resp} = &lt;Response [201]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${uri}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.056540" elapsed="0.011752"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.078416" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.073901" elapsed="0.004588"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.080684" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:47.078664" elapsed="0.002049"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.078516" elapsed="0.002234"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.073860" elapsed="0.006913"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.081232" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.080951" elapsed="0.000333"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.081360" elapsed="0.000032"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.068916" elapsed="0.012574"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:47.081657" elapsed="0.002376"/>
</kw>
<arg>${qos}</arg>
<status status="PASS" start="2026-04-28T03:07:47.052724" elapsed="0.031371"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.089025" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.089662" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '890'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"},"ovsdb:qos-entries":[{"qos-id":"QOS-1","qos-type":"ovsdb:qos-type-linux-htb","qos-other-config":[{"other-config-key":"max-rate","other-config-value":"3300000"}]}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.089762" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.084569" elapsed="0.005218"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.094928" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.094302" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.092392" elapsed="0.002622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.095184" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.095040" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.092373" elapsed="0.002887"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.095636" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        },
                        "ovsdb:qos-entries": [
                            {
                                "qos-id": "QOS-1",
                                "qos-other-config": [
                                    {
                                        "other-config-key": "max-rate",
                                        "other-config-value": "3300000"
                                    }
                                ],
                                "qos-type": "ovsdb:qos-type-linux-htb"
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.095392" elapsed="0.000305"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.095739" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.090067" elapsed="0.005795"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.099566" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.099819" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.100009" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.096019" elapsed="0.004029"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.107337" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.106232" elapsed="0.001224"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.103579" elapsed="0.003937"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.107751" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.107552" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.103553" elapsed="0.004304"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.108412" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.108066" elapsed="0.000464"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.108590" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.100421" elapsed="0.008341"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.084300" elapsed="0.024531"/>
</kw>
<kw name="Create Qos Linked Queue" owner="OVSDB">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-28T03:07:47.109735" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/bug_7160/create_qoslinkedqueue.json"&gt;/w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/variables/ovsdb/bug_7160/create_qoslinkedqueue.json&lt;/a&gt;'.</msg>
<msg time="2026-04-28T03:07:47.110083" level="INFO">${body} = {
    "network-topology:node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:qos-entries": [
                {
                    "qos-id": "QOS-1",
                    "qos-ot...</msg>
<var>${body}</var>
<arg>${OVSDB_CONFIG_DIR}/bug_7160/create_qoslinkedqueue.json</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-28T03:07:47.109530" elapsed="0.000593"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.117029" level="INFO">PUT Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '1521', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
    "network-topology:node": [
        {
            "node-id": "ovsdb:HOST1",
            "ovsdb:qos-entries": [
                {
                    "qos-id": "QOS-1",
                    "qos-other-config": [
                        {
                            "other-config-key": "max-rate",
                            "other-config-value": "3300000"
                        }
                    ],
                    "qos-type": "ovsdb:qos-type-linux-htb",
                    "queue-list": [
                        {
                            "queue-number": "0"
                        }
                    ]
                }
            ],
            "ovsdb:queues": [
                {
                    "queue-id": "QUEUE-1",
                    "dscp" : 51,
                    "queues-other-config": [
                        {
                            "queue-other-config-key": "max-rate",
                            "queue-other-config-value": "1230000"
                        },
                        {
                            "queue-other-config-key": "min-rate",
                            "queue-other-config-value": "1000000"
                        }
                    ],
                    "queues-external-ids": [
                        {
                            "queues-external-id-key": "qexid",
                            "queues-external-id-value": "qexvalue"
                        }
                    ]
                }
            ]
        }
    ]
}
 
 </msg>
<msg time="2026-04-28T03:07:47.117084" level="INFO">PUT Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.117169" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}</arg>
<arg>data=${body}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.110332" elapsed="0.006862"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.121466" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.119575" elapsed="0.001954"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.124335" level="INFO">${resp_json} = </msg>
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:47.121691" elapsed="0.002686"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.121554" elapsed="0.002874"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.119556" elapsed="0.004903"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.125018" level="INFO"/>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.124653" elapsed="0.000425"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.125137" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.117480" elapsed="0.007847"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${resp.status_code}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:47.125522" elapsed="0.003129"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.109128" elapsed="0.019610"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.136359" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.137140" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1172'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:queues":[{"queue-id":"QUEUE-1","queues-external-ids":[{"queues-external-id-key":"qexid","queues-external-id-value":"qexvalue"}],"dscp":51,"queues-other-config":[{"queue-other-config-key":"min-rate","queue-other-config-value":"1000000"},{"queue-other-config-key":"max-rate","queue-other-config-value":"1230000"}]}],"ovsdb:qos-entries":[{"qos-id":"QOS-1","queue-list":[{"queue-number":0}],"qos-other-config":[{"other-config-key":"max-rate","other-config-value":"3300000"}],"qos-type":"ovsdb:qos-type-linux-htb"}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.137241" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.129419" elapsed="0.007847"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.142304" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.141626" elapsed="0.000713"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.139743" elapsed="0.002657"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.142633" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.142436" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.139724" elapsed="0.003059"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.143344" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:qos-entries": [
                            {
                                "qos-id": "QOS-1",
                                "qos-other-config": [
                                    {
                                        "other-config-key": "max-rate",
                                        "other-config-value": "3300000"
                                    }
                                ],
                                "qos-type": "ovsdb:qos-type-linux-htb",
                                "queue-list": [
                                    {
                                        "queue-number": 0
                                    }
                                ]
                            }
                        ],
                        "ovsdb:queues": [
                            {
                                "dscp": 51,
                                "queue-id": "QUEUE-1",
                                "queues-external-ids": [
                                    {
                                        "queues-external-id-key": "qexid",
                                        "queues-external-id-value": "qexvalue"
                                    }
                                ],
                                "queues-other-config": [
                                    {
                                        "queue-other-config-key": "min-rate",
                                        "queue-other-config-value": "1000000"
                                    },
                                    {
                                        "queue-other-config-key": "max-rate",
                                        "queue-other-config-value": "1230000"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.142995" elapsed="0.000448"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.143502" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.137560" elapsed="0.006117"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.150369" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.151101" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.151476" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.143873" elapsed="0.007669"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.161068" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.160279" elapsed="0.000850"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.158126" elapsed="0.003047"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.161366" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.161200" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.158073" elapsed="0.003373"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.161842" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.161582" elapsed="0.000391"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.162021" elapsed="0.000032"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.152269" elapsed="0.009885"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.129034" elapsed="0.033174"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.169848" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1/queue-list=0 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1/queue-list=0 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.169903" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1/queue-list=0 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}/queue-list=0</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.162375" elapsed="0.007650"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.175858" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.177073" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1138'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:queues":[{"queue-id":"QUEUE-1","queues-external-ids":[{"queues-external-id-key":"qexid","queues-external-id-value":"qexvalue"}],"dscp":51,"queues-other-config":[{"queue-other-config-key":"min-rate","queue-other-config-value":"1000000"},{"queue-other-config-key":"max-rate","queue-other-config-value":"1230000"}]}],"ovsdb:qos-entries":[{"qos-id":"QOS-1","qos-type":"ovsdb:qos-type-linux-htb","qos-other-config":[{"other-config-key":"max-rate","other-config-value":"3300000"}]}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.177238" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.170569" elapsed="0.006707"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.185653" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.184495" elapsed="0.001200"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.181522" elapsed="0.004231"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.186020" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.185790" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.181493" elapsed="0.004637"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.186766" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:qos-entries": [
                            {
                                "qos-id": "QOS-1",
                                "qos-other-config": [
                                    {
                                        "other-config-key": "max-rate",
                                        "other-config-value": "3300000"
                                    }
                                ],
                                "qos-type": "ovsdb:qos-type-linux-htb"
                            }
                        ],
                        "ovsdb:queues": [
                            {
                                "dscp": 51,
                                "queue-id": "QUEUE-1",
                                "queues-external-ids": [
                                    {
                                        "queues-external-id-key": "qexid",
                                        "queues-external-id-value": "qexvalue"
                                    }
                                ],
                                "queues-other-config": [
                                    {
                                        "queue-other-config-key": "min-rate",
                                        "queue-other-config-value": "1000000"
                                    },
                                    {
                                        "queue-other-config-key": "max-rate",
                                        "queue-other-config-value": "1230000"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.186353" elapsed="0.000529"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.186989" elapsed="0.000061"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.177742" elapsed="0.009484"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.192846" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.193100" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.193224" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.187479" elapsed="0.005772"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.198631" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.197858" elapsed="0.000803"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.195888" elapsed="0.002814"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.198870" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.198729" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.195868" elapsed="0.003108"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.199401" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.199118" elapsed="0.000400"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.199564" elapsed="0.000031"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.193578" elapsed="0.006115"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.170287" elapsed="0.029459"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.205817" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.205884" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:qos-entries=QOS-1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.199923" elapsed="0.006071"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.212920" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.214164" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '975'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1","ovsdb:queues":[{"queue-id":"QUEUE-1","queues-external-ids":[{"queues-external-id-key":"qexid","queues-external-id-value":"qexvalue"}],"dscp":51,"queues-other-config":[{"queue-other-config-key":"min-rate","queue-other-config-value":"1000000"},{"queue-other-config-key":"max-rate","queue-other-config-value":"1230000"}]}]}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.214333" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.206780" elapsed="0.007589"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.221406" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.220453" elapsed="0.000993"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.217841" elapsed="0.003661"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.221736" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.221538" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.217813" elapsed="0.004029"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.222397" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1",
                        "ovsdb:queues": [
                            {
                                "dscp": 51,
                                "queue-id": "QUEUE-1",
                                "queues-external-ids": [
                                    {
                                        "queues-external-id-key": "qexid",
                                        "queues-external-id-value": "qexvalue"
                                    }
                                ],
                                "queues-other-config": [
                                    {
                                        "queue-other-config-key": "min-rate",
                                        "queue-other-config-value": "1000000"
                                    },
                                    {
                                        "queue-other-config-key": "max-rate",
                                        "queue-other-config-value": "1230000"
                                    }
                                ]
                            }
                        ]
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.222048" elapsed="0.000441"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.222598" elapsed="0.000043"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.214757" elapsed="0.008021"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.229026" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.229392" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.229559" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.223000" elapsed="0.006596"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.237114" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.236070" elapsed="0.001085"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.233413" elapsed="0.003799"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.237465" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.237248" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.233387" elapsed="0.004187"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.238133" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.237761" elapsed="0.000542"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.238366" elapsed="0.000040"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.229989" elapsed="0.008555"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.206315" elapsed="0.032301"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.244605" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.244649" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1/ovsdb:queues=QUEUE-1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${queue}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.238809" elapsed="0.005892"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.250686" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.251182" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '654'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}},{"node-id":"ovsdb:HOST1"}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.251289" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.245206" elapsed="0.006109"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.262428" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.261142" elapsed="0.001315"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.256911" elapsed="0.005586"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.262745" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.262522" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.256869" elapsed="0.005951"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.263230" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    },
                    {
                        "node-id": "ovsdb:HOST1"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.262980" elapsed="0.000307"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.263329" elapsed="0.000029"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.251889" elapsed="0.011564"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.268672" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.268853" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.269035" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.263593" elapsed="0.005469"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.274182" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.273446" elapsed="0.000765"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.271562" elapsed="0.002689"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.274459" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.274276" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.271544" elapsed="0.003020"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.275113" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.274748" elapsed="0.000483"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.275290" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.269349" elapsed="0.006114"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.244917" elapsed="0.030616"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.282334" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.282433" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3AHOST1 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.275724" elapsed="0.006784"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.289350" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.289515" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '628'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://10.30.170.161:6634","ovsdb:connection-info":{"remote-port":6634,"remote-ip":"10.30.170.161"}}]},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.289661" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.283209" elapsed="0.006487"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.296526" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
      ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.295704" elapsed="0.000861"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.293112" elapsed="0.003509"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.296853" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.296656" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.293087" elapsed="0.003912"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.297569" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "node": [
                    {
                        "node-id": "ovsdb://10.30.170.161:6634",
                        "ovsdb:connection-info": {
                            "remote-ip": "10.30.170.161",
                            "remote-port": 6634
                        }
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.297187" elapsed="0.000461"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.297706" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.290098" elapsed="0.007782"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.305138" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.305439" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.305646" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.298101" elapsed="0.007583"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.312912" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.311822" elapsed="0.001150"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.309213" elapsed="0.003816"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.313276" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.313066" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.309186" elapsed="0.004198"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.313915" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.313570" elapsed="0.000487"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.314116" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.306081" elapsed="0.008567"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.282807" elapsed="0.031918"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.317030" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.316710" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.316692" elapsed="0.000420"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:47.317427" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:47.317529" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:47.317274" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.318091" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.317699" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:47.318666" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:47.318288" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.319576" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:47.319651" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:47.319301" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:47.319825" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:47.321169" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:47.590541" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:47.320667" elapsed="0.270060"/>
</kw>
<msg time="2026-04-28T03:07:47.590838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:47.320319" elapsed="0.270643"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:47.318902" elapsed="0.272242"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:47.591832" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:47.614251" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:47.614582" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:47.614719" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:47.591476" elapsed="0.023316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:47.615354" elapsed="0.000653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.617424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.616567" elapsed="0.000916"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:47.617809" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:47.617607" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.617569" elapsed="0.000348"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:47.618157" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-28T03:07:47.618013" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.617992" elapsed="0.000273"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:47.618310" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:47.622863" elapsed="0.000236"/>
</kw>
<msg time="2026-04-28T03:07:47.623161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:47.622173" elapsed="0.001080"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.623477" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.623703" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:47.618777" elapsed="0.005046"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:47.316188" elapsed="0.307787"/>
</kw>
<msg time="2026-04-28T03:07:47.624144" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:47.315603" elapsed="0.308613"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:47.315011" elapsed="0.309327"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.635161" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.635216" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.624566" elapsed="0.010710"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.643454" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.643775" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.644072" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.635829" elapsed="0.008309"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.654977" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.654289" elapsed="0.000719"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.650851" elapsed="0.004197"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.655224" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.655078" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.650801" elapsed="0.004498"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.655699" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.655442" elapsed="0.000310"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.655798" elapsed="0.000035"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.644813" elapsed="0.011136"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.662071" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.662258" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.662430" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.656097" elapsed="0.006361"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.667638" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:47.666893" elapsed="0.000774"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:47.664960" elapsed="0.002746"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:47.667874" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:47.667733" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:47.664927" elapsed="0.003039"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.668350" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:47.668101" elapsed="0.000334"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:47.668477" elapsed="0.000028"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:47.662727" elapsed="0.005873"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:47.635533" elapsed="0.033117"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Config and Operational Topology Should Be Empty" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.675039" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.675191" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.675290" level="INFO">${config_resp} = &lt;Response [200]&gt;</msg>
<var>${config_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.669653" elapsed="0.005663"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:47.680774" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:47.680985" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:47.681115" level="INFO">${operational_resp} = &lt;Response [200]&gt;</msg>
<var>${operational_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:47.675473" elapsed="0.005669"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${config_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:47.681295" elapsed="0.002502"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:47.686360" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${operational_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:47.683966" elapsed="0.002520">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<doc>This will check that only the expected output is there for both operational and config
topology data stores. Empty probably means that only ovsdb:1 is there.</doc>
<status status="FAIL" start="2026-04-28T03:07:47.669390" elapsed="0.017234">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<kw name="Config and Operational Topology Should Be Empty" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:48.698201" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:48.698403" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:48.698557" level="INFO">${config_resp} = &lt;Response [200]&gt;</msg>
<var>${config_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:48.688386" elapsed="0.010208"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:48.705825" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:48.706107" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:48.706329" level="INFO">${operational_resp} = &lt;Response [200]&gt;</msg>
<var>${operational_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:48.698828" elapsed="0.007538"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${config_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:48.706582" elapsed="0.003440"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:48.713668" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${operational_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:48.710238" elapsed="0.003526">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<doc>This will check that only the expected output is there for both operational and config
topology data stores. Empty probably means that only ovsdb:1 is there.</doc>
<status status="FAIL" start="2026-04-28T03:07:48.687579" elapsed="0.026319">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<kw name="Config and Operational Topology Should Be Empty" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:49.724254" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:49.724522" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:49.724672" level="INFO">${config_resp} = &lt;Response [200]&gt;</msg>
<var>${config_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:49.715602" elapsed="0.009108"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:49.731680" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:49.731932" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:49.732154" level="INFO">${operational_resp} = &lt;Response [200]&gt;</msg>
<var>${operational_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:49.724956" elapsed="0.007235"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${config_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:49.732405" elapsed="0.003608"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:49.739636" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${operational_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:49.736266" elapsed="0.003569">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<doc>This will check that only the expected output is there for both operational and config
topology data stores. Empty probably means that only ovsdb:1 is there.</doc>
<status status="FAIL" start="2026-04-28T03:07:49.714803" elapsed="0.025236">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<kw name="Config and Operational Topology Should Be Empty" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:50.748139" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:50.748451" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:50.748618" level="INFO">${config_resp} = &lt;Response [200]&gt;</msg>
<var>${config_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:50.741274" elapsed="0.007381"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:50.753960" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:50.754244" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:50.754506" level="INFO">${operational_resp} = &lt;Response [200]&gt;</msg>
<var>${operational_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:50.748887" elapsed="0.005657"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${config_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:50.754778" elapsed="0.003689"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:50.762341" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${operational_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:50.758737" elapsed="0.003742">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<doc>This will check that only the expected output is there for both operational and config
topology data stores. Empty probably means that only ovsdb:1 is there.</doc>
<status status="FAIL" start="2026-04-28T03:07:50.740735" elapsed="0.021941">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<kw name="Config and Operational Topology Should Be Empty" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:51.772670" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:51.772868" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:51.773044" level="INFO">${config_resp} = &lt;Response [200]&gt;</msg>
<var>${config_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:51.764493" elapsed="0.008589"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:51.778347" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:51.778651" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:51.778813" level="INFO">${operational_resp} = &lt;Response [200]&gt;</msg>
<var>${operational_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:51.773307" elapsed="0.005541"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${config_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:51.779096" elapsed="0.003374"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:51.787767" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${operational_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:51.782689" elapsed="0.005506">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<doc>This will check that only the expected output is there for both operational and config
topology data stores. Empty probably means that only ovsdb:1 is there.</doc>
<status status="FAIL" start="2026-04-28T03:07:51.763686" elapsed="0.024699">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<kw name="Config and Operational Topology Should Be Empty" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:52.798785" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:52.799023" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:52.799177" level="INFO">${config_resp} = &lt;Response [200]&gt;</msg>
<var>${config_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:52.790328" elapsed="0.008886"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:52.805277" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:52.805555" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:52.805891" level="INFO">${operational_resp} = &lt;Response [200]&gt;</msg>
<var>${operational_resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:52.799440" elapsed="0.006545"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${config_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-28T03:07:52.806349" elapsed="0.005489"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.816486" level="FAIL">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${operational_resp.text}</arg>
<arg>{"topology-id":"ovsdb:1"}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:52.812216" elapsed="0.004371">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<doc>This will check that only the expected output is there for both operational and config
topology data stores. Empty probably means that only ovsdb:1 is there.</doc>
<status status="FAIL" start="2026-04-28T03:07:52.789359" elapsed="0.027368">'{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<msg time="2026-04-28T03:07:52.816862" level="FAIL">Keyword 'OVSDB.Config and Operational Topology Should Be Empty' failed after retrying for 5 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>5s</arg>
<arg>1s</arg>
<arg>OVSDB.Config and Operational Topology Should Be Empty</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-28T03:07:47.668801" elapsed="5.148201">Keyword 'OVSDB.Config and Operational Topology Should Be Empty' failed after retrying for 5 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</kw>
<kw name="Test Teardown" type="TEARDOWN">
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:52.823134" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:52.823252" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:52.823346" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:52.817968" elapsed="0.005403"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.830733" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:52.829783" elapsed="0.000994"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:52.827042" elapsed="0.003845"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:52.831159" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:52.830949" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:52.827004" elapsed="0.004264"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.831813" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:52.831458" elapsed="0.000430"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:52.831972" elapsed="0.000050"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:52.823701" elapsed="0.008462"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:07:52.839422" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:07:52.839612" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:07:52.839735" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:07:52.832360" elapsed="0.007401"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.845835" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:52.844796" elapsed="0.001080"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:52.842548" elapsed="0.003404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:52.846196" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:52.845992" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:52.842529" elapsed="0.003778"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.846866" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:52.846495" elapsed="0.000556"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:07:52.847115" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:07:52.840073" elapsed="0.007220"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:07:52.817665" elapsed="0.029699"/>
</kw>
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:52.851883" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:52.851503" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:52.851477" elapsed="0.000540"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:52.852405" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:52.852546" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:52.852214" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.853336" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:52.852784" elapsed="0.000617"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:52.854149" level="INFO">${conn_id} = 289</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:52.853608" elapsed="0.000576"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:52.855475" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:52.855580" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:52.855100" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:52.855765" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:52.857070" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:53.117322" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:52.856606" elapsed="0.260889"/>
</kw>
<msg time="2026-04-28T03:07:53.117604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:52.856255" elapsed="0.261474"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:52.854473" elapsed="0.263424"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:53.118557" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:54.285985" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:54.286373" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:54.286474" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:53.118222" elapsed="1.168310"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:54.287032" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.288636" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:54.288000" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:54.289267" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:54.288968" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.288888" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:54.289907" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-28T03:07:54.289661" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.289625" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:54.290268" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:54.294841" elapsed="0.000313"/>
</kw>
<msg time="2026-04-28T03:07:54.295218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.294182" elapsed="0.001130"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.295531" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.295751" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:54.290844" elapsed="0.005024"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:52.850709" elapsed="1.445336"/>
</kw>
<msg time="2026-04-28T03:07:54.296121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:52.849900" elapsed="1.446306"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:52.849184" elapsed="1.447132"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.299338" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:54.298964" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.298918" elapsed="0.000531"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.299830" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:54.299999" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:54.299649" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.300790" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:54.300241" elapsed="0.000633"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.301679" level="INFO">${conn_id} = 290</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:54.301109" elapsed="0.000617"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.303037" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:54.303116" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:54.302714" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.303290" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.304737" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:54.569769" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:54.304134" elapsed="0.265899"/>
</kw>
<msg time="2026-04-28T03:07:54.570165" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.303768" elapsed="0.266554"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:54.302107" elapsed="0.268458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.571396" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:54.613913" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:54.614298" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:54.614397" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:54.571069" elapsed="0.043383"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:54.614916" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.616583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:54.615877" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:54.617193" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:54.616863" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.616813" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:54.617714" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-28T03:07:54.617475" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.617440" elapsed="0.000579"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:54.618100" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:54.622751" elapsed="0.000331"/>
</kw>
<msg time="2026-04-28T03:07:54.623163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.622091" elapsed="0.001195"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.623521" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.623743" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:54.618767" elapsed="0.005095"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:54.298162" elapsed="0.325858"/>
</kw>
<msg time="2026-04-28T03:07:54.624098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.297345" elapsed="0.326842"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:54.296572" elapsed="0.327729"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:52.848621" elapsed="1.775761"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.627614" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:54.627239" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.627211" elapsed="0.000519"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.628156" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:54.628303" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:54.627929" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.629121" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:54.628547" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.630010" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:54.629400" elapsed="0.000654"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.631597" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:54.631678" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:54.630896" elapsed="0.000808"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.631860" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.633176" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:54.893014" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:54.632827" elapsed="0.260398"/>
</kw>
<msg time="2026-04-28T03:07:54.893352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.632463" elapsed="0.261044"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:54.630360" elapsed="0.263438"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.894691" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:54.917426" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:54.917729" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:54.917828" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:54.894232" elapsed="0.023646"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:54.918302" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.919923" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:54.919263" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:54.920561" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:54.920253" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.920198" elapsed="0.000534"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:54.921143" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-28T03:07:54.920858" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.920822" elapsed="0.000525"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:54.921429" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:54.927110" elapsed="0.000263"/>
</kw>
<msg time="2026-04-28T03:07:54.927443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.926380" elapsed="0.001162"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.927788" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.928052" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:54.922521" elapsed="0.005654"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:54.626413" elapsed="0.301913"/>
</kw>
<msg time="2026-04-28T03:07:54.928402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.625525" elapsed="0.302963"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:54.624648" elapsed="0.303964"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:54.931929" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:54.931508" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:54.931481" elapsed="0.000583"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.932462" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:54.932605" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:54.932274" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.933497" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:54.932841" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.934395" level="INFO">${conn_id} = 292</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:54.933830" elapsed="0.000616"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:54.935725" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:54.935801" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:54.935439" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.935993" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:54.937216" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:55.202234" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:54.936827" elapsed="0.265585"/>
</kw>
<msg time="2026-04-28T03:07:55.202520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.936479" elapsed="0.266157"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:54.935002" elapsed="0.267802"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.203411" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:55.458930" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:55.459352" level="INFO">${stdout} =  * Exiting ovs-vswitchd (12070)
 * Exiting ovsdb-server (12053)</msg>
<msg time="2026-04-28T03:07:55.459470" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:55.203107" elapsed="0.256420"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:55.460070" elapsed="0.000551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:55.461978" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:55.461165" elapsed="0.000933"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:55.462673" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:55.462305" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:55.462237" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:55.463357" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-28T03:07:55.463053" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:55.463000" elapsed="0.000609"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:55.463700" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:55.470466" elapsed="0.000174"/>
</kw>
<msg time="2026-04-28T03:07:55.470688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.469930" elapsed="0.000834"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:55.470924" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:55.471100" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:55.464628" elapsed="0.006556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:54.930626" elapsed="0.540669"/>
</kw>
<msg time="2026-04-28T03:07:55.471352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:54.929750" elapsed="0.541662"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:54.928908" elapsed="0.542584"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:55.474010" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:55.473685" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:55.473663" elapsed="0.000432"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.474402" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:55.474529" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:55.474258" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:55.475436" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:55.474734" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.476094" level="INFO">${conn_id} = 293</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:55.475655" elapsed="0.000465"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:55.477130" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:55.477210" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:55.476792" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.477451" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.478641" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:55.758308" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:55.478325" elapsed="0.280252"/>
</kw>
<msg time="2026-04-28T03:07:55.758726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.477974" elapsed="0.280908"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:55.476350" elapsed="0.282744"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.759781" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:55.772620" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:55.772859" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:55.772990" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:55.759433" elapsed="0.013611"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:55.773418" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:55.774927" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:55.774311" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:55.775509" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:55.775224" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:55.775173" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:55.776034" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-28T03:07:55.775776" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:55.775744" elapsed="0.000467"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:55.776284" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:55.783124" elapsed="0.000218"/>
</kw>
<msg time="2026-04-28T03:07:55.783404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.782390" elapsed="0.001105"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:55.783718" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:55.783971" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:55.776970" elapsed="0.007131"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:55.473050" elapsed="0.311332"/>
</kw>
<msg time="2026-04-28T03:07:55.784462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.472416" elapsed="0.312136"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:55.471803" elapsed="0.312867"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:55.787858" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:55.787470" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:55.787442" elapsed="0.000555"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.788424" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:55.788599" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:55.788205" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:55.789455" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:55.788857" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.790309" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:55.789743" elapsed="0.000603"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:55.791723" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:55.791836" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:55.791275" elapsed="0.000596"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.792121" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:55.793894" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:56.053399" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:06:58 UTC 2026

  System load:  0.08               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:55.793515" elapsed="0.260127"/>
</kw>
<msg time="2026-04-28T03:07:56.053755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.792922" elapsed="0.260928"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:55.790649" elapsed="0.263350"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:56.054861" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:56.158441" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:56.158706" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:56.158807" level="INFO">${stderr} = 2026-04-28T03:07:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:56Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:56.054260" elapsed="0.104601"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:56.159274" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:56.160849" level="INFO">2026-04-28T03:07:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:56Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:56.160216" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:56.161600" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:56.161299" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:56.161243" elapsed="0.000522"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:56.162153" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-28T03:07:56.161881" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:56.161848" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:56.162409" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:56.167979" elapsed="0.000210"/>
</kw>
<msg time="2026-04-28T03:07:56.168249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:56.167309" elapsed="0.001025"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:56.168544" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:56.168763" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:56.163118" elapsed="0.005758"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:55.786602" elapsed="0.382423"/>
</kw>
<msg time="2026-04-28T03:07:56.169115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:55.785770" elapsed="0.383425"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:55.784983" elapsed="0.384318"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:52.848051" elapsed="3.321328"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:56.173460" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:56.173092" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:56.173065" elapsed="0.000505"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:56.173973" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:56.174119" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:56.173767" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:56.174885" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:56.174356" elapsed="0.000614"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:56.175708" level="INFO">${conn_id} = 295</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:56.175177" elapsed="0.000566"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:56.177027" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:56.177171" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:56.176617" elapsed="0.000588"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:56.177414" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:56.178747" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:56.481090" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:56.178335" elapsed="0.302956"/>
</kw>
<msg time="2026-04-28T03:07:56.481555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:56.177984" elapsed="0.303708"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:56.176050" elapsed="0.305819"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:56.482564" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:07:57.629235" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:57.629786" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:57.629900" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:56.482213" elapsed="1.147791"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:57.630619" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:57.632784" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:57.631993" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:57.633527" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:57.633168" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:57.633102" elapsed="0.000602"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:57.634114" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-28T03:07:57.633829" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:57.633793" elapsed="0.000537"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:57.634412" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:57.639602" elapsed="0.000271"/>
</kw>
<msg time="2026-04-28T03:07:57.639920" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.639048" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:57.640198" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:57.640353" elapsed="0.000037"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:57.635231" elapsed="0.005227"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:56.172294" elapsed="1.468260"/>
</kw>
<msg time="2026-04-28T03:07:57.640611" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:56.171506" elapsed="1.469167"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:56.170787" elapsed="1.469971"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:57.642965" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:57.642673" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:57.642654" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.643358" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:57.643464" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:57.643200" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:57.644143" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:57.643729" elapsed="0.000462"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.644788" level="INFO">${conn_id} = 296</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:57.644340" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:57.645779" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:57.645854" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:57.645465" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.646043" elapsed="0.000579"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.647553" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:57.911004" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:57.647152" elapsed="0.264081"/>
</kw>
<msg time="2026-04-28T03:07:57.911345" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.646786" elapsed="0.264683"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:57.645049" elapsed="0.266569"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.912218" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:07:57.954436" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:07:57.954598" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:57.954659" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:57.911888" elapsed="0.042802"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:57.954917" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:57.955995" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:57.955537" elapsed="0.000518"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:57.956414" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:57.956178" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:57.956143" elapsed="0.000375"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:57.956739" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-28T03:07:57.956590" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:57.956569" elapsed="0.000289"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:57.956904" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:57.961364" elapsed="0.000257"/>
</kw>
<msg time="2026-04-28T03:07:57.961681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.960671" elapsed="0.001096"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:57.962188" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:57.962416" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:57.957369" elapsed="0.005160"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:57.642112" elapsed="0.320542"/>
</kw>
<msg time="2026-04-28T03:07:57.962727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.641499" elapsed="0.321311"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:57.640967" elapsed="0.321950"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:56.170274" elapsed="1.792846"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:57.965790" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:57.965520" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:57.965502" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.966170" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:57.966274" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:57.966029" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:57.966821" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:57.966444" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.967416" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:57.967034" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:57.968587" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:57.968664" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:57.968299" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.968838" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:57.970012" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:58.274689" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:57.969679" elapsed="0.305174"/>
</kw>
<msg time="2026-04-28T03:07:58.274971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.969333" elapsed="0.305755"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:57.967852" elapsed="0.307397"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.275860" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:07:58.308513" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:58.308763" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:58.308858" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:58.275541" elapsed="0.033367"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:58.309304" elapsed="0.000460"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:58.310840" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:58.310209" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:58.311424" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:58.311137" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:58.311086" elapsed="0.000494"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:58.311927" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-28T03:07:58.311695" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:58.311662" elapsed="0.000579"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:58.312341" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:58.319470" elapsed="0.000332"/>
</kw>
<msg time="2026-04-28T03:07:58.319899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.318258" elapsed="0.001847"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:58.320459" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:58.321233" elapsed="0.000051"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:58.313060" elapsed="0.008365"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:57.964965" elapsed="0.356661"/>
</kw>
<msg time="2026-04-28T03:07:58.321742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:57.964133" elapsed="0.357697"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:57.963385" elapsed="0.358524"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:58.324073" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:58.323769" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:58.323751" elapsed="0.000425"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.324491" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:58.326548" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:58.324352" elapsed="0.002225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:58.327135" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:58.326726" elapsed="0.000457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.327706" level="INFO">${conn_id} = 298</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:58.327333" elapsed="0.000399"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:58.328717" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:58.328795" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:58.328436" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.328993" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.330149" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:58.609438" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:58.329818" elapsed="0.279728"/>
</kw>
<msg time="2026-04-28T03:07:58.609625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.329474" elapsed="0.280248"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:58.327953" elapsed="0.281904"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.610366" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:07:58.887682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:58.888020" level="INFO">${stdout} =  * Exiting ovs-vswitchd (6575)
 * Exiting ovsdb-server (6552)</msg>
<msg time="2026-04-28T03:07:58.888126" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:58.610114" elapsed="0.278064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:58.888549" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:58.890097" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:58.889454" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:58.890639" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:58.890359" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:58.890309" elapsed="0.000594"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:58.891380" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:07:58.891102" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:58.891057" elapsed="0.000548"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:58.891691" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:58.897895" elapsed="0.000166"/>
</kw>
<msg time="2026-04-28T03:07:58.898104" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.897348" elapsed="0.000820"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:58.898318" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:58.898471" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:58.892472" elapsed="0.006080"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:58.323221" elapsed="0.575421"/>
</kw>
<msg time="2026-04-28T03:07:58.898693" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.322645" elapsed="0.576105"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:58.322121" elapsed="0.576710"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:58.900990" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:58.900713" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:58.900695" elapsed="0.000376"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.901350" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:58.901454" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:58.901212" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:58.902036" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:58.901625" elapsed="0.000457"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.902602" level="INFO">${conn_id} = 299</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:58.902231" elapsed="0.000396"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:58.903540" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:58.903617" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:58.903262" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.903806" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:58.904973" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:59.194957" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:58.904646" elapsed="0.290495"/>
</kw>
<msg time="2026-04-28T03:07:59.195244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.904298" elapsed="0.291073"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:58.902834" elapsed="0.292703"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.196467" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:07:59.209388" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:59.209635" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:07:59.209731" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:59.196152" elapsed="0.013628"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:59.210169" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.211698" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:59.211040" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:59.212402" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:59.212049" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.211993" elapsed="0.000594"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:59.212997" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:07:59.212710" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.212676" elapsed="0.000512"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:59.213261" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:59.219117" elapsed="0.000208"/>
</kw>
<msg time="2026-04-28T03:07:59.219384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.218288" elapsed="0.001183"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:59.219731" elapsed="0.000033"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:59.219976" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:59.213959" elapsed="0.006131"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:58.900155" elapsed="0.320060"/>
</kw>
<msg time="2026-04-28T03:07:59.220287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:58.899551" elapsed="0.320818"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:58.899035" elapsed="0.321441"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:59.223434" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:59.223067" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.223041" elapsed="0.000507"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.224074" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:59.224218" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:59.223842" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.225011" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:59.224457" elapsed="0.000618"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.225800" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:59.225284" elapsed="0.000551"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.227121" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:59.227229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:59.226714" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.227469" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.229278" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:07:59.515245" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:59.228802" elapsed="0.286783"/>
</kw>
<msg time="2026-04-28T03:07:59.515759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.228252" elapsed="0.287637"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:59.226145" elapsed="0.289905"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.516562" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:07:59.640791" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:07:59.641209" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:07:59.641315" level="INFO">${stderr} = 2026-04-28T03:07:59Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:59Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:59Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:07:59.516297" elapsed="0.125113"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:07:59.642052" elapsed="0.000566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.643773" level="INFO">2026-04-28T03:07:59Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:59Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:07:59Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:59.643083" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:59.644414" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:59.644112" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.644057" elapsed="0.000519"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:07:59.644987" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-28T03:07:59.644694" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.644661" elapsed="0.000536"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:07:59.645272" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:07:59.652286" elapsed="0.000156"/>
</kw>
<msg time="2026-04-28T03:07:59.652487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.651478" elapsed="0.001078"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:59.652710" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:59.652872" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:07:59.646020" elapsed="0.006953"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:59.222277" elapsed="0.430790"/>
</kw>
<msg time="2026-04-28T03:07:59.653123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.221484" elapsed="0.431704"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:59.220739" elapsed="0.432539"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:56.169679" elapsed="3.483656"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:52.847533" elapsed="6.805856"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.654573" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:59.654122" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-28T03:07:59.654826" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:07:59.654679" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.654660" elapsed="0.000320"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-28T03:07:59.655157" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.656413" level="FAIL">'['7160', 'southbound']' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-28T03:07:59.656020" elapsed="0.000466">'['7160', 'southbound']' does not contain '-'</status>
</kw>
<msg time="2026-04-28T03:07:59.656584" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-28T03:07:59.655602" elapsed="0.001009"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.657294" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-28T03:07:59.656778" elapsed="0.000544"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.657782" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-28T03:07:59.657479" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.658270" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:07:59.657971" elapsed="0.000325"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.658832" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']

Keyword 'OVSDB.Config and Operational Topology Should Be Empty' failed after retrying for 5 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-28T03:07:59.658445" elapsed="0.000453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.659341" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:59.659075" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.660123" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-28T03:07:59.659713" elapsed="0.000459"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:59.659479" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.659461" elapsed="0.000770"/>
</if>
<arg>${TEST_TAGS}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-28T03:07:59.653718" elapsed="0.006558"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:52.817298" elapsed="6.843033"/>
</kw>
<doc>If this bug is reproduced, it's possible that the operational store will be
stuck with leftover nodes and further system tests could fail. It's advised to run this
test last if possible. See the bug description for high level steps to reproduce
https://bugs.opendaylight.org/show_bug.cgi?id=7160#c0</doc>
<tag>7160</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']</tag>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-28T03:07:44.789707" elapsed="14.870672">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']

Keyword 'OVSDB.Config and Operational Topology Should Be Empty' failed after retrying for 5 seconds. The last error was: '{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}' does not contain '{"topology-id":"ovsdb:1"}'</status>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Clean All Ovs Nodes">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:07:59.664397" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:07:59.664126" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:07:59.664104" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.664758" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:07:59.664861" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:07:59.664620" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.665473" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:07:59.665076" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.666100" level="INFO">${conn_id} = 301</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:07:59.665681" elapsed="0.000445"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:07:59.666968" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:07:59.667047" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:07:59.666684" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.667221" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:07:59.668603" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:00.204390" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:59 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:07:59.668179" elapsed="0.536395"/>
</kw>
<msg time="2026-04-28T03:08:00.204689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.667793" elapsed="0.537023"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:07:59.666345" elapsed="0.538662"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:00.205601" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:08:01.352022" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:01.352407" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:01.352511" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:00.205299" elapsed="1.147270"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:01.353093" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:01.354762" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:01.354066" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:01.355436" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:01.355119" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:01.355063" elapsed="0.001530"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:01.357164" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-28T03:08:01.356807" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:01.356759" elapsed="0.000661"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:01.357518" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:01.362832" elapsed="0.000177"/>
</kw>
<msg time="2026-04-28T03:08:01.363057" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.362108" elapsed="0.001020"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:01.363281" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:01.363435" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:01.358639" elapsed="0.004879"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:07:59.663591" elapsed="1.700018"/>
</kw>
<msg time="2026-04-28T03:08:01.363661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:07:59.662918" elapsed="1.700800"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:07:59.662483" elapsed="1.701311"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:01.365926" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:01.365616" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:01.365596" elapsed="0.000427"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.366375" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:01.366486" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:01.366166" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:01.367242" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:01.366797" elapsed="0.000492"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.367838" level="INFO">${conn_id} = 302</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:01.367438" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:01.368712" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:01.368789" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:01.368429" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.368977" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.370252" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:01.634806" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:59 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:01.369808" elapsed="0.265181"/>
</kw>
<msg time="2026-04-28T03:08:01.635096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.369462" elapsed="0.265753"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:01.368090" elapsed="0.267287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.636031" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:08:01.669384" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:08:01.669640" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:01.669849" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:01.635680" elapsed="0.034224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:01.670312" elapsed="0.000449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:01.671818" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:01.671197" elapsed="0.000716"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:01.672451" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:01.672125" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:01.672074" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:01.673007" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:08:01.672734" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:01.672701" elapsed="0.000497"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:01.673273" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:01.678496" elapsed="0.000165"/>
</kw>
<msg time="2026-04-28T03:08:01.678706" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.677850" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:01.678930" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:01.679106" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:01.673981" elapsed="0.005208"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:01.365124" elapsed="0.314156"/>
</kw>
<msg time="2026-04-28T03:08:01.679332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.364448" elapsed="0.314943"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:01.363995" elapsed="0.315474"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:07:59.661914" elapsed="2.017613"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:01.681717" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:01.681450" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:01.681432" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.682092" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:01.682195" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:01.681944" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:01.682749" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:01.682367" elapsed="0.000429"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.683344" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:01.682951" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:01.684217" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:01.684294" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:01.683921" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.684467" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.685648" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:01.990015" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:59 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:01.685335" elapsed="0.304963"/>
</kw>
<msg time="2026-04-28T03:08:01.990399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.684987" elapsed="0.305526"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:01.683581" elapsed="0.307088"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:01.991269" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:08:02.013898" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:02.014203" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:02.014307" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:01.990971" elapsed="0.023390"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:02.014807" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.016449" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:02.015752" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:02.017075" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:02.016733" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.016682" elapsed="0.000565"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:02.017623" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-28T03:08:02.017374" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.017338" elapsed="0.000483"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:02.017900" elapsed="0.000041"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:02.024638" elapsed="0.000152"/>
</kw>
<msg time="2026-04-28T03:08:02.024834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.024009" elapsed="0.000888"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.025065" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.025220" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:02.018653" elapsed="0.006648"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:01.680949" elapsed="0.344445"/>
</kw>
<msg time="2026-04-28T03:08:02.025447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:01.680184" elapsed="0.345322"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:01.679717" elapsed="0.345866"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.027746" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:02.027480" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.027462" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.028121" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:02.028224" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:02.027988" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.028774" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:02.028396" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.029367" level="INFO">${conn_id} = 304</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:02.028991" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.030298" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:02.030375" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:02.030015" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.030549" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.031745" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:02.286884" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:59 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:02.031429" elapsed="0.255641"/>
</kw>
<msg time="2026-04-28T03:08:02.287169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.031078" elapsed="0.256204"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:02.029604" elapsed="0.257842"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.288071" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:08:02.372063" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:02.372374" level="INFO">${stdout} =  * Exiting ovs-vswitchd (12957)
 * Exiting ovsdb-server (12934)</msg>
<msg time="2026-04-28T03:08:02.372469" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:02.287750" elapsed="0.084771"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:02.372951" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.374612" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:02.373906" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:02.375209" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:02.374884" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.374834" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:02.375717" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-28T03:08:02.375485" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.375451" elapsed="0.000456"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:02.376018" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:02.381524" elapsed="0.000223"/>
</kw>
<msg time="2026-04-28T03:08:02.381811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.380534" elapsed="0.001370"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.382152" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.382377" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:02.376701" elapsed="0.005793"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:02.026999" elapsed="0.355627"/>
</kw>
<msg time="2026-04-28T03:08:02.382704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.026395" elapsed="0.356392"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:02.025776" elapsed="0.357125"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.385873" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:02.385479" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.385451" elapsed="0.000539"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.386271" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:02.386443" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:02.386135" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.387044" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:02.386614" elapsed="0.000479"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.387624" level="INFO">${conn_id} = 305</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:02.387242" elapsed="0.000408"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.388492" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:02.388568" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:02.388214" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.388739" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.390147" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:02.656740" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:59 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:02.389601" elapsed="0.267323"/>
</kw>
<msg time="2026-04-28T03:08:02.657045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.389238" elapsed="0.267913"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:02.387857" elapsed="0.269439"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.657847" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:08:02.670081" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:02.670202" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:02.670246" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:02.657558" elapsed="0.012711"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:02.670434" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.671251" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:02.670899" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:02.671541" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:02.671389" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.671360" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:02.671778" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-28T03:08:02.671671" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.671656" elapsed="0.000206"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:02.671896" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:02.675302" elapsed="0.000154"/>
</kw>
<msg time="2026-04-28T03:08:02.675500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.674548" elapsed="0.001016"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.675719" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.675873" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:02.672235" elapsed="0.003737"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:02.384710" elapsed="0.291355"/>
</kw>
<msg time="2026-04-28T03:08:02.676157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.383866" elapsed="0.292352"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:02.383214" elapsed="0.293378"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:02.678630" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:02.678362" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:02.678343" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.679012" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:02.679116" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:02.678859" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.679675" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.161" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:02.679291" elapsed="0.000432"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.680274" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:02.679873" elapsed="0.000428"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:02.681368" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:02.681448" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:02.680857" elapsed="0.000616"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.681627" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.682832" level="INFO">Logging into '10.30.170.161:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:02.929202" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:59 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   19.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.161
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:02.682516" elapsed="0.246857"/>
</kw>
<msg time="2026-04-28T03:08:02.929478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.682163" elapsed="0.247437"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:02.680515" elapsed="0.249248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:02.930453" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:08:03.025084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:03.025499" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:08:03.025605" level="INFO">${stderr} = 2026-04-28T03:08:02Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:02Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:02Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:02.930129" elapsed="0.095533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:03.026206" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:03.028103" level="INFO">2026-04-28T03:08:02Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:02Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:02Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:03.027303" elapsed="0.000909"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:03.028694" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:03.028396" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:03.028341" elapsed="0.000515"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:03.029247" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-28T03:08:03.029008" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:03.028970" elapsed="0.000473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:03.029519" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:03.036617" elapsed="0.000158"/>
</kw>
<msg time="2026-04-28T03:08:03.036821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:03.035506" elapsed="0.001385"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:03.037062" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:03.037219" elapsed="0.000019"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:03.030263" elapsed="0.007039"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:02.677845" elapsed="0.359550"/>
</kw>
<msg time="2026-04-28T03:08:03.037452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:02.677276" elapsed="0.360236"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:02.676803" elapsed="0.360790"/>
</kw>
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:07:59.661589" elapsed="3.376062"/>
</kw>
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:03.040801" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:03.040529" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:03.040510" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:03.041192" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:03.041297" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:03.041051" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:03.041854" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:03.041470" elapsed="0.000430"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:03.042453" level="INFO">${conn_id} = 307</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:03.042068" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:03.043337" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:03.043414" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:03.043052" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:03.043587" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:03.044904" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:03.326470" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:03.044480" elapsed="0.282165"/>
</kw>
<msg time="2026-04-28T03:08:03.326753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:03.044121" elapsed="0.282750"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:03.042690" elapsed="0.284367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:03.327661" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-28T03:08:04.519751" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:04.520275" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:04.520377" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:03.327354" elapsed="1.193079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:04.520906" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:04.522501" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:04.521838" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:04.523124" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:04.522798" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:04.522749" elapsed="0.000532"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:04.523632" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:08:04.523399" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:04.523364" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:04.523900" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:04.531241" elapsed="0.000211"/>
</kw>
<msg time="2026-04-28T03:08:04.531515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.530298" elapsed="0.001307"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:04.531813" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:04.532161" elapsed="0.000035"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:04.524617" elapsed="0.007673"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:03.039795" elapsed="1.492625"/>
</kw>
<msg time="2026-04-28T03:08:04.532495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:03.039198" elapsed="1.493404"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:03.038737" elapsed="1.494100"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:04.535148" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:04.534857" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:04.534839" elapsed="0.000389"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.535502" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:04.535604" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:04.535368" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:04.536167" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:04.535772" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.536738" level="INFO">${conn_id} = 308</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:04.536361" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:04.537671" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:04.537747" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:04.537394" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.537919" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.539192" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:04.808605" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:04.538761" elapsed="0.270033"/>
</kw>
<msg time="2026-04-28T03:08:04.808892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.538419" elapsed="0.270626"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:04.537058" elapsed="0.272183"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.809881" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-04-28T03:08:04.843466" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-28T03:08:04.843773" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:04.843903" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:04.809558" elapsed="0.034453"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:04.844382" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:04.846041" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:04.845352" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:04.846628" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:04.846342" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:04.846294" elapsed="0.000489"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:04.847173" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-28T03:08:04.846900" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:04.846866" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:04.847456" elapsed="0.000048"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:04.853867" elapsed="0.000171"/>
</kw>
<msg time="2026-04-28T03:08:04.854083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.853212" elapsed="0.000934"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:04.854302" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:04.854456" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:04.848248" elapsed="0.006290"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:04.534381" elapsed="0.320247"/>
</kw>
<msg time="2026-04-28T03:08:04.854680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.533809" elapsed="0.320929"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:04.533157" elapsed="0.321658"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-28T03:08:03.038233" elapsed="1.816637"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:04.857988" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:04.857635" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:04.857611" elapsed="0.000472"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.858589" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:04.858702" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:04.858443" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:04.859300" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:04.858877" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.859893" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:04.859502" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:04.860856" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:04.860937" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:04.860524" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.861138" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:04.862415" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:05.124716" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:04.862066" elapsed="0.262844"/>
</kw>
<msg time="2026-04-28T03:08:05.125081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.861680" elapsed="0.263552"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:04.860162" elapsed="0.265241"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.126020" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-28T03:08:05.199752" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:05.200168" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:05.200279" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:05.125699" elapsed="0.074640"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:05.200967" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.202640" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:05.201984" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:05.203263" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:05.202930" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.202879" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:05.203777" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-28T03:08:05.203535" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.203501" elapsed="0.000508"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:05.204088" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:05.210714" elapsed="0.000154"/>
</kw>
<msg time="2026-04-28T03:08:05.210913" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.210088" elapsed="0.000911"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.211155" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.211324" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:05.204777" elapsed="0.006632"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:04.856294" elapsed="0.355208"/>
</kw>
<msg time="2026-04-28T03:08:05.211638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:04.855698" elapsed="0.356002"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:04.855073" elapsed="0.356705"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.213845" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:05.213562" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.213543" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.214229" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:05.214335" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:05.214094" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.214905" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:05.214521" elapsed="0.000465"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.215584" level="INFO">${conn_id} = 310</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:05.215138" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.216473" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:05.216550" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:05.216191" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.216726" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.218017" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:05.484332" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:05.217683" elapsed="0.266812"/>
</kw>
<msg time="2026-04-28T03:08:05.484603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.217331" elapsed="0.267391"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:05.215822" elapsed="0.269063"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.485512" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-28T03:08:05.548783" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:05.549157" level="INFO">${stdout} =  * Exiting ovs-vswitchd (7151)
 * Exiting ovsdb-server (7134)</msg>
<msg time="2026-04-28T03:08:05.549255" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:05.485208" elapsed="0.064100"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:05.549730" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.551133" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:05.550498" elapsed="0.000730"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:05.551671" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:05.551392" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.551347" elapsed="0.000476"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:05.552205" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:08:05.551968" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.551904" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:05.552471" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:05.558792" elapsed="0.000230"/>
</kw>
<msg time="2026-04-28T03:08:05.559088" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.558177" elapsed="0.001069"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.559407" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.559567" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:05.553207" elapsed="0.006443"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:05.213071" elapsed="0.346673"/>
</kw>
<msg time="2026-04-28T03:08:05.559798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.212457" elapsed="0.347401"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:05.212004" elapsed="0.347936"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.562109" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:05.561787" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.561766" elapsed="0.000428"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.562483" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:05.562591" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:05.562339" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.563173" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:05.562763" elapsed="0.000458"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.563758" level="INFO">${conn_id} = 311</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:05.563373" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.564646" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:05.564723" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:05.564368" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.564899" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.566449" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:05.838503" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:05.565839" elapsed="0.272837"/>
</kw>
<msg time="2026-04-28T03:08:05.838781" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.565490" elapsed="0.273410"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:05.564021" elapsed="0.275071"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.839743" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-28T03:08:05.852649" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:05.852994" level="INFO">${stdout} = </msg>
<msg time="2026-04-28T03:08:05.853094" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:05.839390" elapsed="0.013758"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:05.853560" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.855071" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:05.854445" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:05.855730" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:05.855452" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.855406" elapsed="0.000476"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:05.856291" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-28T03:08:05.856059" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.856022" elapsed="0.000457"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:05.856553" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:05.862319" elapsed="0.000193"/>
</kw>
<msg time="2026-04-28T03:08:05.862574" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.861685" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.862806" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.862977" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:05.857265" elapsed="0.005801"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:05.561292" elapsed="0.301867"/>
</kw>
<msg time="2026-04-28T03:08:05.863212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.560620" elapsed="0.302651"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:05.560164" elapsed="0.303187"/>
</kw>
<kw name="Run Command On Mininet" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:05.865478" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:05.865189" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:05.865167" elapsed="0.000394"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.865846" level="INFO">index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-28T03:08:05.865971" level="INFO">${current_ssh_connection} = index=137
host=10.30.171.239
alias=None
port=22
timeout=30 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-28T03:08:05.865705" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.866535" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.239" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:05.866145" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.867132" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-28T03:08:05.866728" elapsed="0.000431"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-28T03:08:05.868337" level="INFO">Length is 0.</msg>
<msg time="2026-04-28T03:08:05.868415" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-28T03:08:05.867718" elapsed="0.000721"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.868596" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-28T03:08:05.869780" level="INFO">Logging into '10.30.171.239:22' as 'jenkins'.</msg>
<msg time="2026-04-28T03:08:06.130417" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Apr 28 03:07:41 UTC 2026

  System load:  0.18               Processes:             117
  Usage of /:   19.3% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.239
  Swap usage:   0%

  =&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-28T03:08:05.869461" elapsed="0.261119"/>
</kw>
<msg time="2026-04-28T03:08:06.130679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.869108" elapsed="0.261815"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-28T03:08:05.867374" elapsed="0.263731"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-28T03:08:06.131677" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-28T03:08:06.236053" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-28T03:08:06.236374" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-04-28T03:08:06.236476" level="INFO">${stderr} = 2026-04-28T03:08:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:06Z|00001|dns_res...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-28T03:08:06.131382" elapsed="0.105150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-28T03:08:06.236987" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:06.238513" level="INFO">2026-04-28T03:08:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-28T03:08:06Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:06.237861" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:06.239111" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-28T03:08:06.238789" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:06.238741" elapsed="0.000528"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-28T03:08:06.239620" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-28T03:08:06.239385" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:06.239352" elapsed="0.000462"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-28T03:08:06.239890" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-28T03:08:06.244850" elapsed="0.000235"/>
</kw>
<msg time="2026-04-28T03:08:06.245146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:06.243970" elapsed="0.001265"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:06.245447" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:06.245659" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-28T03:08:06.240664" elapsed="0.005108"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-28T03:08:05.864670" elapsed="0.381226"/>
</kw>
<msg time="2026-04-28T03:08:06.245994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-28T03:08:05.864028" elapsed="0.382048"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-28T03:08:05.863556" elapsed="0.382628"/>
</kw>
<arg>${TOOLS_SYSTEM_2_IP}</arg>
<doc>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
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-04-28T03:08:03.037869" elapsed="3.208390"/>
</kw>
<status status="PASS" start="2026-04-28T03:07:59.661313" elapsed="6.585017"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.255857" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.256031" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '315'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid//bridge/ovsbug_br']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.246653" elapsed="0.009458"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.263074" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.263422" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '298'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.256301" elapsed="0.007274"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.269262" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.269414" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovsbug_br 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '315'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid//bridge/ovsbug_br']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.263919" elapsed="0.005591"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.275057" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.275276" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '298'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.269725" elapsed="0.005652"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.281380" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsbug_br 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsbug_br 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.281787" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634%2Fbridge%2Fovsbug_br 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '328'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634/bridge/ovsbug_br']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.275622" elapsed="0.006262"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.288226" level="INFO">DELETE Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 path_url=/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.288379" level="INFO">DELETE Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.170.161%3A6634 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '311'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Data does not exist",
        "error-path": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://10.30.170.161:6634']",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.282131" elapsed="0.006344"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.293710" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 path_url=/rests/data/network-topology:network-topology?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.293914" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '505'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"ovsdb:1"},{"topology-id":"hwvtep:1"},{"topology-id":"pcep-topology","node":[{"node-id":"43.43.43.43","network-topology-pcep:session-config":{"password":"topsecret","speaker-entity-id-value":"AQIDBA=="}}],"topology-types":{"network-topology-pcep:topology-pcep":{"ted-name":"example-linkstate-topology","session-config":{"rpc-timeout":30,"listen-port":4189,"listen-address":"0.0.0.0","dead-timer-value":120,"keep-alive-timer-value":30}}}}]}} 
 </msg>
<msg time="2026-04-28T03:08:06.294096" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_CONFIG_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.289176" elapsed="0.004956"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:08:06.301758" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
       ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:08:06.300750" elapsed="0.001050"/>
</kw>
<status status="PASS" start="2026-04-28T03:08:06.298027" elapsed="0.003830"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:06.302124" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:06.301894" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:06.297998" elapsed="0.004241"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:06.302785" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "network-topology-pcep:session-config": {
                            "password": "topsecret",
                            "speaker-entity-id-value": "AQIDBA=="
                        },
                        "node-id": "43.43.43.43"
                    }
                ],
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {
                        "session-config": {
                            "dead-timer-value": 120,
                            "keep-alive-timer-value": 30,
                            "listen-address": "0.0.0.0",
                            "listen-port": 4189,
                            "rpc-timeout": 30
                        },
                        "ted-name": "example-linkstate-topology"
                    }
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:06.302429" elapsed="0.000430"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:08:06.302920" elapsed="0.000065"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:08:06.294520" elapsed="0.008608"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.309524" level="INFO">GET Request : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01x6fkrceta5j91c7plroajwbyv5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-28T03:08:06.309712" level="INFO">GET Response : url=http://10.30.170.159:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '2509'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1","node":[{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1","ovsdb:stp_enable":false,"ovsdb:bridge-uuid":"a9564225-fdb1-4cca-93c9-93fed5c44d60","ovsdb:managed-by":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']","ovsdb:bridge-name":"ovscon_br1","ovsdb:datapath-type":"ovsdb:datapath-type-system","termination-point":[{"tp-id":"ovscon_br1","ovsdb:port-uuid":"51203667-71a3-451c-8172-21739eec13fd","ovsdb:ingress-policing-burst":0,"ovsdb:name":"ovscon_br1","ovsdb:interface-uuid":"3e6b1b62-e748-4a10-8e3f-d48aedf83ef4","ovsdb:ingress-policing-rate":0,"ovsdb:interface-type":"ovsdb:interface-type-internal","ovsdb:mac-in-use":"26:42:56:a9:ca:4c","ovsdb:ofport":65534,"ovsdb:ifindex":4}],"ovsdb:datapath-id":"00:00:26:42:56:a9:ca:4c"},{"node-id":"ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d","ovsdb:db-version":"8.3.0","ovsdb:interface-type-entry":[{"interface-type":"ovsdb:interface-type-vxlan"},{"interface-type":"ovsdb:interface-type-tap"},{"interface-type":"ovsdb:interface-type-stt"},{"interface-type":"ovsdb:interface-type-internal"},{"interface-type":"ovsdb:interface-type-patch"},{"interface-type":"ovsdb:interface-type-lisp"},{"interface-type":"ovsdb:interface-type-geneve"},{"interface-type":"ovsdb:interface-type-gre"},{"interface-type":"ovsdb:interface-type-system"}],"ovsdb:ovs-version":"2.17.11","ovsdb:connection-info":{"local-port":6640,"remote-port":32962,"local-ip":"10.30.170.159","remote-ip":"10.30.170.161"},"ovsdb:openvswitch-external-ids":[{"external-id-key":"system-id","external-id-value":"3eb07ef3-5df0-4195-8cad-5c56eb67b298"},{"external-id-key":"hostname","external-id-value":"ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"},{"external-id-key":"rundir","external-id-value":"/var/run/openvswitch"}],"ovsdb:datapath-type-entry":[{"datapath-type":"ovsdb:datapath-type-netdev"},{"datapath-type":"ovsdb:datapath-type-system"}],"ovsdb:manager-entry":[{"target":"tcp:10.30.170.159:6640","number_of_connections":1,"connected":true}],"ovsdb:managed-node-entry":[{"bridge-ref":"/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"}]}]},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-28T03:08:06.309830" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-28T03:08:06.303326" elapsed="0.006530"/>
</kw>
<kw name="Log Content" owner="Utils">
<if>
<branch type="IF" condition="'''${resp_content}''' != '${EMPTY}'">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-28T03:08:06.315773" level="INFO">${resp_json} = {
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
        ...</msg>
<var>${resp_json}</var>
<arg>json.dumps(json.loads('''${resp_content}'''), sort_keys=True, indent=4, separators=(',', ': '))</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-28T03:08:06.314705" elapsed="0.001164"/>
</kw>
<status status="PASS" start="2026-04-28T03:08:06.312332" elapsed="0.003598"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-28T03:08:06.316190" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-28T03:08:06.315988" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-28T03:08:06.312314" elapsed="0.003984"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-28T03:08:06.316852" level="INFO">{
    "network-topology:network-topology": {
        "topology": [
            {
                "topology-id": "flow:1"
            },
            {
                "topology-id": "hwvtep:1"
            },
            {
                "node": [
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1",
                        "ovsdb:bridge-name": "ovscon_br1",
                        "ovsdb:bridge-uuid": "a9564225-fdb1-4cca-93c9-93fed5c44d60",
                        "ovsdb:datapath-id": "00:00:26:42:56:a9:ca:4c",
                        "ovsdb:datapath-type": "ovsdb:datapath-type-system",
                        "ovsdb:managed-by": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d']",
                        "ovsdb:stp_enable": false,
                        "termination-point": [
                            {
                                "ovsdb:ifindex": 4,
                                "ovsdb:ingress-policing-burst": 0,
                                "ovsdb:ingress-policing-rate": 0,
                                "ovsdb:interface-type": "ovsdb:interface-type-internal",
                                "ovsdb:interface-uuid": "3e6b1b62-e748-4a10-8e3f-d48aedf83ef4",
                                "ovsdb:mac-in-use": "26:42:56:a9:ca:4c",
                                "ovsdb:name": "ovscon_br1",
                                "ovsdb:ofport": 65534,
                                "ovsdb:port-uuid": "51203667-71a3-451c-8172-21739eec13fd",
                                "tp-id": "ovscon_br1"
                            }
                        ]
                    },
                    {
                        "node-id": "ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d",
                        "ovsdb:connection-info": {
                            "local-ip": "10.30.170.159",
                            "local-port": 6640,
                            "remote-ip": "10.30.170.161",
                            "remote-port": 32962
                        },
                        "ovsdb:datapath-type-entry": [
                            {
                                "datapath-type": "ovsdb:datapath-type-netdev"
                            },
                            {
                                "datapath-type": "ovsdb:datapath-type-system"
                            }
                        ],
                        "ovsdb:db-version": "8.3.0",
                        "ovsdb:interface-type-entry": [
                            {
                                "interface-type": "ovsdb:interface-type-vxlan"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-tap"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-stt"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-internal"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-patch"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-lisp"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-geneve"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-gre"
                            },
                            {
                                "interface-type": "ovsdb:interface-type-system"
                            }
                        ],
                        "ovsdb:managed-node-entry": [
                            {
                                "bridge-ref": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='ovsdb://uuid/9a5df812-eb49-4477-a37e-2d464c02791d/bridge/ovscon_br1']"
                            }
                        ],
                        "ovsdb:manager-entry": [
                            {
                                "connected": true,
                                "number_of_connections": 1,
                                "target": "tcp:10.30.170.159:6640"
                            }
                        ],
                        "ovsdb:openvswitch-external-ids": [
                            {
                                "external-id-key": "system-id",
                                "external-id-value": "3eb07ef3-5df0-4195-8cad-5c56eb67b298"
                            },
                            {
                                "external-id-key": "hostname",
                                "external-id-value": "ubuntu-22-04-mininet-ovs-217-44de9062-40d9-457e-9c72-27a350434d"
                            },
                            {
                                "external-id-key": "rundir",
                                "external-id-value": "/var/run/openvswitch"
                            }
                        ],
                        "ovsdb:ovs-version": "2.17.11"
                    }
                ],
                "topology-id": "ovsdb:1"
            },
            {
                "topology-id": "pcep-topology",
                "topology-types": {
                    "network-topology-pcep:topology-pcep": {}
                }
            }
        ]
    }
}</msg>
<arg>${resp_json}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-28T03:08:06.316483" elapsed="0.000510"/>
</kw>
<return>
<value>${resp_json}</value>
<status status="PASS" start="2026-04-28T03:08:06.317056" elapsed="0.000041"/>
</return>
<arg>${resp.text}</arg>
<status status="PASS" start="2026-04-28T03:08:06.310150" elapsed="0.007082"/>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="PASS" start="2026-04-28T03:08:06.288844" elapsed="0.028457"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-28T03:08:06.317638" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-28T03:08:06.317535" elapsed="0.000210"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="PASS" start="2026-04-28T03:07:59.661100" elapsed="6.656720"/>
</kw>
<doc>Collection of test cases to validate OVSDB projects bugs.

TODO: there seems to be some thoughts around never having one-off bug reproduction
test cases, but rather they should exist as another test case in some appropriate
suite. Also it was suggested that using bug ids for test case names was not ideal
this to-do is written in case it's decided to refactor all of these test cases out
of this suite and/or to rename the test cases at a later time.</doc>
<status status="FAIL" start="2026-04-28T03:06:35.644951" elapsed="90.672913"/>
</suite>
<status status="FAIL" start="2026-04-28T03:02:46.792392" elapsed="319.527709"/>
</suite>
<statistics>
<total>
<stat pass="95" fail="26" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="1" skip="0">4794</stat>
<stat pass="0" fail="1" skip="0">5177</stat>
<stat pass="0" fail="1" skip="0">5221</stat>
<stat pass="0" fail="1" skip="0">7160</stat>
<stat pass="0" fail="2" skip="0">7414</stat>
<stat pass="0" fail="1" skip="0">8280</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=5177</stat>
<stat pass="0" fail="6" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=5221</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=['4794', 'southbound']</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=['5221', 'southbound']</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=['7160', 'southbound']</stat>
<stat pass="0" fail="2" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=['7414', 'southbound']</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=['8280', 'southbound']</stat>
<stat pass="95" fail="26" skip="0">southbound</stat>
</tag>
<suite>
<stat name="ovsdb-upstream-southbound.txt" id="s1" pass="95" fail="26" skip="0">ovsdb-upstream-southbound.txt</stat>
<stat name="Connection Manager" id="s1-s1" pass="17" fail="1" skip="0">ovsdb-upstream-southbound.txt.Connection Manager</stat>
<stat name="Configure Exit Ovsdb Node" id="s1-s2" pass="19" fail="3" skip="0">ovsdb-upstream-southbound.txt.Configure Exit Ovsdb Node</stat>
<stat name="Vxlan Extension Test" id="s1-s3" pass="13" fail="4" skip="0">ovsdb-upstream-southbound.txt.Vxlan Extension Test</stat>
<stat name="Configure 1 Ovsdb Node" id="s1-s4" pass="27" fail="8" skip="0">ovsdb-upstream-southbound.txt.Configure 1 Ovsdb Node</stat>
<stat name="Configure Exit Ovsdb Node" id="s1-s5" pass="19" fail="3" skip="0">ovsdb-upstream-southbound.txt.Configure Exit Ovsdb Node</stat>
<stat name="Bug Validation" id="s1-s6" pass="0" fail="7" skip="0">ovsdb-upstream-southbound.txt.Bug Validation</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
